_Boroda_, Сильно! Но ведь задачи могут быть немного сложнее, например такая как в файле, хотя наверняка тоже можно решить формулами))) Я вот думаю может макросом сначала снимать объеденения и вставлять значения, а потом снова как было объеденять? Или пользовательскую функцию какую нить придумать?
_Boroda_, Сильно! Но ведь задачи могут быть немного сложнее, например такая как в файле, хотя наверняка тоже можно решить формулами))) Я вот думаю может макросом сначала снимать объеденения и вставлять значения, а потом снова как было объеденять? Или пользовательскую функцию какую нить придумать?Jhonson
Конечно, смотрел, я к тому что, формула будет очень большая, к тому же еще нужно будет решать вопрос с горизонтальным объеденением. А если нам нжуно будет не просто математические действия производить, а применять условия или еще что нибудь, то формула будет еще больше.
Решение мне понравилось, очень сильно придумано! +
Quote (_Boroda_)
Первый файл смотрел?
Конечно, смотрел, я к тому что, формула будет очень большая, к тому же еще нужно будет решать вопрос с горизонтальным объеденением. А если нам нжуно будет не просто математические действия производить, а применять условия или еще что нибудь, то формула будет еще больше.
Решение мне понравилось, очень сильно придумано! +Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Сообщение отредактировал Jhonson - Пятница, 13.01.2012, 11:59
Конечно, смотрел, я к тому что, формула будет очень большая, к тому же еще нужно будет решать вопрос с горизонтальным объеденением.
Тот бардак, что в файле из примера твоего второго поста даже пытаться решить не буду. В подобных случаях я сразу и очень громко начинаю ругаться, отдаю файл взад и требую привести в нормальный вид. Кстати, я так вот, навскидку, не могу придумать, как формулами определить: ячейка F7 объединена по вертикали или по горизонтали? А те решения, что я в посте 2 привел - это для небольших файликов, которые нужно быстренько посчитать, не нарушая при этом их структуру. Обычно для начальства.
Quote (Jhonson)
Конечно, смотрел, я к тому что, формула будет очень большая, к тому же еще нужно будет решать вопрос с горизонтальным объеденением.
Тот бардак, что в файле из примера твоего второго поста даже пытаться решить не буду. В подобных случаях я сразу и очень громко начинаю ругаться, отдаю файл взад и требую привести в нормальный вид. Кстати, я так вот, навскидку, не могу придумать, как формулами определить: ячейка F7 объединена по вертикали или по горизонтали? А те решения, что я в посте 2 привел - это для небольших файликов, которые нужно быстренько посчитать, не нарушая при этом их структуру. Обычно для начальства._Boroda_
Ну да лучше конечно взад отдать "такой бардак" ))))) Я так на будущее... мало ли что... буду думать на счет UDF, если что придумаю отпишусь. Спасибо! Всех с наступающим старым новым годом! И с пятницей 13!
Ну да лучше конечно взад отдать "такой бардак" ))))) Я так на будущее... мало ли что... буду думать на счет UDF, если что придумаю отпишусь. Спасибо! Всех с наступающим старым новым годом! И с пятницей 13!Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Сообщение отредактировал Jhonson - Пятница, 13.01.2012, 12:24
Option Explicit Function merge(diap As Range) Application.Volatile True Dim i As Range Dim j As Integer, a() As Variant ReDim a(diap.Count) For Each i In diap a(j) = i.MergeArea(1, 1).Value j = j + 1 Next merge = a End Function
Надеюсь кому-нибудь пригодится )))
Уф.. все оказалось куда проще чем я думал:
Code
Option Explicit Function merge(diap As Range) Application.Volatile True Dim i As Range Dim j As Integer, a() As Variant ReDim a(diap.Count) For Each i In diap a(j) = i.MergeArea(1, 1).Value j = j + 1 Next merge = a End Function
Вот такой вариант, только он пока работате только с горизонтальными диапазонами, я думаю что труда не составит сделать и для вертикальных
Code
Function merge_gorizont(diap As Range) Application.Volatile True Dim i As Range Dim j As Integer, a() As Variant ReDim a(diap.Count) For Each i In diap If i.MergeArea.Columns.Count > 1 Then If i.MergeArea(1, 1).Value <> i.Value Then a(j) = 0 Else a(j) = i.MergeArea(1, 1).Value End If Else a(j) = i.MergeArea(1, 1).Value End If j = j + 1 Next merge_gorizont = a End Function
Файл перезалил с UDF как для горизонтальных диапазонов так и для вертикальных.
Вот такой вариант, только он пока работате только с горизонтальными диапазонами, я думаю что труда не составит сделать и для вертикальных
Code
Function merge_gorizont(diap As Range) Application.Volatile True Dim i As Range Dim j As Integer, a() As Variant ReDim a(diap.Count) For Each i In diap If i.MergeArea.Columns.Count > 1 Then If i.MergeArea(1, 1).Value <> i.Value Then a(j) = 0 Else a(j) = i.MergeArea(1, 1).Value End If Else a(j) = i.MergeArea(1, 1).Value End If j = j + 1 Next merge_gorizont = a End Function
Файл перезалил с UDF как для горизонтальных диапазонов так и для вертикальных.Jhonson