Добрый день! Мне было необходимо объединить ячейки по условию. Нашел макрос. Он работает наура. А можно сделать то же самое только формулами? Сам макрос [vba]
Код
Function MergeIf(TextRange As Range, SearchRange As Range, Condition As String) Dim Delimeter As String, i As Long Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой If SearchRange.Count <> TextRange.Count Then MergeIf = CVErr(xlErrRef) Exit Function End If
'проходим по все ячейкам, проверяем условие и собираем текст в переменную OutText For i = 1 To SearchRange.Cells.Count If SearchRange.Cells(i) Like Condition And Len(TextRange.Cells(i))>0 Then OutText = OutText & TextRange.Cells(i) & Delimeter Next i
'выводим результаты без последнего разделителя MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) End Function
[/vba]
[p.s.]в тот раздел вопрос задал?
Добрый день! Мне было необходимо объединить ячейки по условию. Нашел макрос. Он работает наура. А можно сделать то же самое только формулами? Сам макрос [vba]
Код
Function MergeIf(TextRange As Range, SearchRange As Range, Condition As String) Dim Delimeter As String, i As Long Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой If SearchRange.Count <> TextRange.Count Then MergeIf = CVErr(xlErrRef) Exit Function End If
'проходим по все ячейкам, проверяем условие и собираем текст в переменную OutText For i = 1 To SearchRange.Cells.Count If SearchRange.Cells(i) Like Condition And Len(TextRange.Cells(i))>0 Then OutText = OutText & TextRange.Cells(i) & Delimeter Next i
'выводим результаты без последнего разделителя MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) End Function