Нашел в просторах интернета код склеивания текста по двум критериям: [vba]
Код
Function MergeIfs(TextRange As Range, SearchRange1 As Range, Condition1 As String, SearchRange2 As Range, Condition2 As String) Dim Delimeter As String, i As Long Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой If SearchRange1.Count <> TextRange.Count Or SearchRange2.Count <> TextRange.Count Then MergeIfs = CVErr(xlErrRef) Exit Function End If
'проходим по все ячейкам, проверяем все условия и собираем текст в переменную OutText For i = 1 To SearchRange1.Cells.Count If SearchRange1.Cells(i) = Condition1 And SearchRange2.Cells(i) = Condition2 Then OutText = OutText & TextRange.Cells(i) & Delimeter End If Next i
'выводим результаты без последнего разделителя MergeIfs = Left(OutText, Len(OutText) - Len(Delimeter)) End Function
[/vba] В принципе макрос рабочий, но не работает для трех критериев и даже пробуя на двух критериях с диапазоном дат не работает.
Есть ли обходной путь или как можно подправить код чтобы можно было собрать даты через запятую по критерию диапазона дат и ФИО
Добрый день, всем участникам форума!
Нашел в просторах интернета код склеивания текста по двум критериям: [vba]
Код
Function MergeIfs(TextRange As Range, SearchRange1 As Range, Condition1 As String, SearchRange2 As Range, Condition2 As String) Dim Delimeter As String, i As Long Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой If SearchRange1.Count <> TextRange.Count Or SearchRange2.Count <> TextRange.Count Then MergeIfs = CVErr(xlErrRef) Exit Function End If
'проходим по все ячейкам, проверяем все условия и собираем текст в переменную OutText For i = 1 To SearchRange1.Cells.Count If SearchRange1.Cells(i) = Condition1 And SearchRange2.Cells(i) = Condition2 Then OutText = OutText & TextRange.Cells(i) & Delimeter End If Next i
'выводим результаты без последнего разделителя MergeIfs = Left(OutText, Len(OutText) - Len(Delimeter)) End Function
[/vba] В принципе макрос рабочий, но не работает для трех критериев и даже пробуя на двух критериях с диапазоном дат не работает.
Есть ли обходной путь или как можно подправить код чтобы можно было собрать даты через запятую по критерию диапазона дат и ФИОAnis625
Pelena, Перед обращением на форум тоже пытался провернуть через PQ сделать группировку, но так и не получилось =( Спасибо Вам огромное за помочь с кодом
Pelena, Перед обращением на форум тоже пытался провернуть через PQ сделать группировку, но так и не получилось =( Спасибо Вам огромное за помочь с кодомAnis625