내가 아는 한 Excel에서 쉼표로 구분 된 태그를 구문 분석하고 요약 할 수있는 기본 제공 기능은 없습니다. 물론 워크 시트 함수와 약간의 VBA를 사용하여 고유 한 솔루션을 만들 수 있습니다. 이를위한 빠른 솔루션이 있습니다.
1 단계 : Alt+ F11를 눌러 Excel에서 VBA 편집기 창을 엽니 다. 사용자 정의 함수를 위해 새 모듈을 삽입하고이 코드에 붙여 넣으십시오.
Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate. sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer
On Error GoTo EH
rra = rr
out = ""
i = 1
Do While i <= UBound(rra, 1)
If rra(i, 1) <> False Then
out = out & rra(i, 1) & sep
End If
i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function
EH:
rra = rr.Value
Resume Next
End Function
이 기능을 사용하면 태그 데이터를 요약하기 위해 쉼표로 구분 된 목록을 만들 수 있습니다.
2 단계 : 워크 시트에서 검색하려는 태그를 셀 (아래 예의 H2)에 입력하십시오. 오른쪽의 셀에서 Ctrl+ Shift+ 를 눌러 다음 수식을 입력하십시오 Enter.
=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")
Ctrl+ Shift+ 를 누르면 Enter수식을 배열 수식으로 입력하게됩니다. {...}
수식 입력 줄에 둘러싸여 나타납니다 . 수식 $B$2:$B$6
에서는에 나열된 항목의 모든 태그를 보유하는 범위입니다 $A$2:$A$6
.
편집 :
일치하는 것이 하나의 셀의 목록이 아닌 열에 나열되는 것을 신경 쓰지 않으면 워크 시트 함수 만 사용하여 태그에 대한 일치를 반환 할 수 있습니다.
제목이에 Column A
있고 태그가에 Column B
있고 검색중인 태그가에있는 H2
경우 다음 배열 수식 을 사용하고 I2
필요한만큼 채울 수 있습니다.
=IFERROR(INDEX($A$1:$A$6,SMALL(IF(NOT(ISERROR(FIND($H$2,$B$1:$B$6))),ROW($B$1:$B$6),2000000),ROW()-1)),"")
수식은 먼저 각 행의 태그에 검색어가 포함되어 있는지 여부에 따라 숫자 배열을 형성하여 작동합니다. 일치하는 것이 있으면 행 번호가 배열에 저장됩니다. 찾을 수 없으면 2000000이 배열에 저장됩니다. 다음으로 SMALL(<array>,ROW()-1)
수식 의 일부 ROW()-1
는 배열에서 가장 작은 값을 반환합니다 . 다음으로이 값은 INDEX()
함수에 인덱스 인수로 전달되며 제목 배열에서 해당 인덱스의 값이 반환됩니다. 제목 배열의 행 수보다 큰 수를 INDEX()
인수로 전달 하면 오류가 반환됩니다. 일치하는 항목이 없으면 2000000이 인수로 전달되므로 오류가 리턴됩니다. IFERROR()
그런 다음 이 함수는 이 함수를 반환합니다 ""
.
ROW()
이 공식에서 어떻게 사용 되는지 파악하는 것이 중요합니다 . 다른 행에서 시작하여 결과 목록을 표시 SMALL()
하려면 배열에서 첫 번째로 작은 값을 리턴하도록 함수 의 두 번째 인수를 조정해야합니다 . 예를 들어 결과 목록이 행 2 대신 행 1에서 시작되면 대신을 사용 SMALL(...,ROW())
합니다 SMALL(...,ROW()-1)
.
또한 제목 및 태그 목록이 1 행에서 시작되지 않으면 수식도 조정해야합니다. 의 두 번째 인수 IF()
기능은 행이 아닌 행 1에서 제목이 시작 목록, 당신은 포함하는 공식이 필요합니다 경우 데이터의 첫 행에 일치 1. 예를 반환하도록 조정해야합니다 IF(...,ROW($A$2:$A$7)-1,...)
대신 IF(...,ROW($A$1:$A$6),...)
.