Как получить список номеров, чей статус учащихся прошел или не прошел, в одной ячейке в Excel - PullRequest
0 голосов
/ 06 мая 2020

Я хочу получить формулу, которая дает результат в виде списка, разделенного запятыми, чей статус ученика является пройденным или неуспешным в одной ячейке в Excel.

For Example Below Out:

Спасибо

Ответы [ 2 ]

1 голос
/ 06 мая 2020

В следующем решении используется UDF. Сначала поместите следующую настраиваемую функцию в обычный модуль (Visual Basi c Editor >> Insert >> Module) ...

Function AConcat(a As Variant, Optional Sep As String = "") As String
' Harlan Grove, Mar 2002

    Dim Y As Variant

    If TypeOf a Is Range Then
        For Each Y In a.Cells
            AConcat = AConcat & Y.Value & Sep
        Next Y
    ElseIf IsArray(a) Then
        For Each Y In a
            AConcat = AConcat & Y & Sep
        Next Y
    Else
        AConcat = AConcat & a & Sep
    End If

    AConcat = Left(AConcat, Len(AConcat) - Len(Sep))

End Function

Затем попробуйте следующие формулы массива рабочего листа, которые необходимо подтвердить с помощью CONTROL + SHIFT + ENTER ...

=SUBSTITUTE(AConcat(IF($B$2:$B$11="Pass",","&$A$2:$A$11,"")),",","",1)

и

=SUBSTITUTE(AConcat(IF($B$2:$B$11="Fail",","&$A$2:$A$11,"")),",","",1)
0 голосов
/ 06 мая 2020

Попробуйте это решение формулы без функции Textjoin и вспомогательного столбца

В E2 введите формулу массива (подтвердите, нажав Ctrl + Shift + Enter) и скопируйте вниз:

=MID(SUBSTITUTE(TEXT(SUM(SMALL((IF($B$2:$B$11=D2,TEXT($A$2:$A$11,"00"),"")=TEXT(ROW($1:$10),"00"))*ROW($1:$10),ROW($1:$10))*100^(10-ROW($1:$10))),REPT(" 00",10))," 00",""),2,99)

enter image description here

И,

Если вы хотите получить значение результата с использованием разделителя запятой, формула массива будет выглядеть следующим образом:

=MID(SUBSTITUTE(TEXT(SUM(SMALL((IF($B$2:$B$11=D2,TEXT($A$2:$A$11,"00"),"")=TEXT(ROW($1:$10),"00"))*ROW($1:$10),ROW($1:$10))*100^(10-ROW($1:$10))),REPT("\,00",10)),",00",""),2,99)

enter image description here

...