Я пытаюсь написать формулу для перечисления 5 позиций строки GL, выделенных желтым цветом, в синей ячейке, выделенной желтым цветом, исходя из того факта, что все они используют одну и ту же сумму перевода. Я могу получить количество совпадений с формулой countif, но в основном я хочу объединить записи GL в строку как таковую:

"GL10_171094 GL10_171096 GL10_171098 GL10_171100 GL10_171102"

Есть предложения?

таблица

2 ответа2

1

Вы также можете использовать этот просто сделанный UDF.

Чтобы сохранить его, щелкните правой кнопкой мыши вкладку «Лист», нажмите «Просмотреть код», затем вставьте этот код как модуль.

Function ConcatenateIf(CriteriaRange As range, Condition As Variant, ConcatenateRange As range, Optional Separator As String = ",") As Variant

Dim xResult As String
On Error Resume Next

If CriteriaRange.count <> ConcatenateRange.count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If

For I = 1 To CriteriaRange.count
    If CriteriaRange.Cells(I).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.Cells(I).Value
    End If
Next I

If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If

  ConcatenateIf = xResult

  Exit Function

End Function

NB: наконец напишите эту формулу в ячейке B2.

  =ConcatenateIf(C2:C16,C2,A2:A16)
0

Вы пишете эту формулу в синей колонне. Я предполагаю, это столбец B.

Итак, Формула в B2

=IF(C2<>C1,CONCATENATE(A2,", ",B2,),"")

Перетащите его до последней строки. Со своими данными вы получаете комбинированное значение в каждой последней строке набора кодов.

Сначала вы попадаете в 6-й ряд, затем с 7 по 9, затем в 14-й ряд.

Надеюсь, это поможет вам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .