Добрый день. Необходимо реализовать следующую задачу. Чтобы столбец A формировался по условию: если в столбце стоит 1, то склеиваем текст из шапки. Прописала формулой, что требуется. Но при большом количестве столбцов (около 100) достаточно проблематично в формуле указывать наименование каждого столбца. Подобной реализации задачи не нашла. Прошу помощи, без макроса наверное здесь не обойтись...
Добрый день. Необходимо реализовать следующую задачу. Чтобы столбец A формировался по условию: если в столбце стоит 1, то склеиваем текст из шапки. Прописала формулой, что требуется. Но при большом количестве столбцов (около 100) достаточно проблематично в формуле указывать наименование каждого столбца. Подобной реализации задачи не нашла. Прошу помощи, без макроса наверное здесь не обойтись... Butterfly
У Вас же уже написана пользовательская функция "=MergeIf()" [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 Then OutText = OutText & TextRange.Cells(i) & Delimeter Next i
'выводим результаты без последнего разделителя MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) End Function
[/vba]
У Вас же уже написана пользовательская функция "=MergeIf()" [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 Then OutText = OutText & TextRange.Cells(i) & Delimeter Next i
'выводим результаты без последнего разделителя MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) End Function