Note: The other languages of the website are Google-translated. Back to English

Excel에서 한 셀에 여러 값을 반환하도록 vlookup하는 방법은 무엇입니까?

일반적으로 Excel에서 VLOOKUP 함수를 사용할 때 기준과 일치하는 값이 여러 개 있으면 첫 번째 값만 가져올 수 있습니다. 그러나 때로는 다음 스크린 샷과 같이 기준을 충족하는 모든 해당 값을 하나의 셀에 반환하고 싶을 때 어떻게 해결할 수 있습니까?

TEXTJOIN 함수를 사용하여 여러 값을 하나의 셀로 반환하는 Vlookup (Excel 2019 및 Office 365)

사용자 정의 함수를 사용하여 여러 값을 하나의 셀로 반환하는 Vlookup

유용한 기능을 사용하여 여러 값을 하나의 셀로 반환하는 Vlookup


TEXTJOIN 함수를 사용하여 여러 값을 하나의 셀로 반환하는 Vlookup (Excel 2019 및 Office 365)

Excel 2019 및 Office 365와 같은 더 높은 버전의 Excel이있는 경우 새로운 기능이 있습니다. 텍스트 조인,이 강력한 기능을 사용하면 빠르게 vlookup하고 일치하는 모든 값을 하나의 셀로 반환 할 수 있습니다.

일치하는 모든 값을 하나의 셀로 반환하는 Vlookup

결과를 입력 할 빈 셀에 아래 수식을 적용한 다음 Ctrl + Shift + Enter 키를 함께 사용하여 첫 번째 결과를 얻은 다음 채우기 핸들을이 수식을 사용하려는 셀로 드래그하면 아래 스크린 샷과 같이 해당하는 모든 값이 표시됩니다.

=TEXTJOIN(",",TRUE,IF($A$2:$A$11=E2,$C$2:$C$11,""))

참고 : 위 공식에서 A2 : A11 조회 범위에는 조회 데이터가 포함됩니다. E2 조회 값입니다. C2 : C11 "에서 일치하는 값을 반환 할 데이터 범위입니다.,"는 여러 레코드를 구분하는 구분 기호입니다.

중복되지 않은 모든 일치 값을 하나의 셀로 반환하는 Vlookup

중복없이 조회 데이터를 기반으로 일치하는 모든 값을 반환하려면 아래 수식이 도움이 될 수 있습니다.

다음 수식을 복사하여 빈 셀에 붙여 넣은 다음 Ctrl + Shift + Enter 키를 함께 사용하여 첫 번째 결과를 얻은 다음이 수식을 복사하여 다른 셀을 채우면 아래 스크린 샷과 같이 dulpicate 값없이 해당하는 모든 값을 얻을 수 있습니다.

=TEXTJOIN(",", TRUE, IF(IFERROR(MATCH($C$2:$C$11, IF(E2=$A$2:$A$11, $C$2:$C$11, ""), 0),"")=MATCH(ROW($C$2:$C$11), ROW($C$2:$C$11)), $C$2:$C$11, ""))

참고 : 위 공식에서 A2 : A11 조회 범위에는 조회 데이터가 포함됩니다. E2 조회 값입니다. C2 : C11 "에서 일치하는 값을 반환 할 데이터 범위입니다.,"는 여러 레코드를 구분하는 구분 기호입니다.

사용자 정의 함수를 사용하여 여러 값을 하나의 셀로 반환하는 Vlookup

위의 TEXTJOIN 함수는 Excel 2019 및 Office 365에서만 사용할 수 있으며, 다른 하위 Excel 버전이있는 경우이 작업을 완료하기 위해 일부 코드를 사용해야합니다.

일치하는 모든 값을 하나의 셀로 반환하는 Vlookup

1. 누르고 ALT + F11 키가 열립니다. 응용 프로그램 용 Microsoft Visual Basic 창.

2. 딸깍 하는 소리 끼워 넣다 > 모듈을 클릭하고 다음 코드를 모듈 창.

VBA 코드 : 여러 값을 하나의 셀로 반환하는 Vlookup

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
'Updateby Extendoffice
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

3. 그런 다음이 코드를 저장하고 닫은 다음 워크 시트로 돌아가 다음 공식을 입력합니다. =CONCATENATEIF($A$2:$A$11, E2, $C$2:$C$11, ", ") 결과를 배치하려는 특정 빈 셀에 넣은 다음 채우기 핸들을 아래로 끌어 원하는 한 셀의 모든 해당 값을 가져옵니다. 스크린 샷을 참조하십시오.

참고 : 위 공식에서 A2 : A11 조회 범위에는 조회 데이터가 포함됩니다. E2 조회 값입니다. C2 : C11 "에서 일치하는 값을 반환 할 데이터 범위입니다.,"는 여러 레코드를 구분하는 구분 기호입니다.

중복되지 않은 모든 일치 값을 하나의 셀로 반환하는 Vlookup

반환 된 일치 값의 중복을 무시하려면 아래 코드를 사용하십시오.

1. 누르고 Alt + F11 키를 눌러 응용 프로그램 용 Microsoft Visual Basic 창.

2. 딸깍 하는 소리 끼워 넣다 > 모듈을 클릭하고 다음 코드를 모듈 창.

VBA 코드 : Vlookup 및 여러 고유 한 일치 값을 하나의 셀로 반환

Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
'Updateby Extendoffice
    Dim xDic As New Dictionary
    Dim xRows As Long
    Dim xStr As String
    Dim i As Long
    On Error Resume Next
    xRows = LookupRange.Rows.Count
    For i = 1 To xRows
        If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
            xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
        End If
    Next
    xStr = ""
    MultipleLookupNoRept = xStr
    If xDic.Count > 0 Then
        For i = 0 To xDic.Count - 1
            xStr = xStr & xDic.Keys(i) & ","
        Next
        MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
    End If
End Function

3. 코드를 삽입 한 후 도구 > 참조 열린 응용 프로그램 용 Microsoft Visual Basic 창에서 튀어 나온 참조 – VBAProject 대화 상자, 확인 Microsoft 스크립팅 런타임 에서 옵션 사용 가능한 참조 목록 상자, 스크린 샷 참조 :

4. 그런 다음 OK 대화 상자를 닫으려면 코드 창을 저장하고 닫은 다음 워크 시트로 돌아가 다음 수식을 입력합니다. =MultipleLookupNoRept(E2,$A$2:$C$11,3) into a blank cell where you want to output the result, and then drag the fill hanlde down to get all matching values, see screenshot:

참고 : 위 공식에서 A2 : C11 사용할 데이터 범위입니다. E2 조회 값, 숫자 3 반환 된 값을 포함하는 열 번호입니다.

유용한 기능을 사용하여 여러 값을 하나의 셀로 반환하는 Vlookup

 당신은 우리가있는 경우 Excel 용 Kutools그와 고급 결합 행 기능을 사용하면 동일한 값을 기반으로 행을 빠르게 병합하거나 결합하고 필요에 따라 몇 가지 계산을 수행 할 수 있습니다.

참고 :이것을 적용하려면 고급 결합 행, 먼저 Excel 용 Kutools을 클릭 한 다음 기능을 빠르고 쉽게 적용하십시오.

설치 후 Excel 용 Kutools, 다음과 같이하십시오.

1. 다른 열을 기준으로 한 열 데이터를 결합 할 데이터 범위를 선택합니다.

2. 딸깍 하는 소리 쿠툴 > 병합 및 분할 > 고급 결합 행, 스크린 샷 참조 :

3. 튀어 나온 고급 결합 행 대화 상자 :

  • 결합 할 키 열 이름을 클릭 한 다음 기본 키
  • 그런 다음 키 열을 기반으로 데이터를 결합 할 다른 열을 클릭하고 결합 결합 된 데이터를 구분하기 위해 하나의 구분 기호를 선택합니다.

4. 그런 다음 OK 버튼을 누르면 다음과 같은 결과가 나타납니다.

Excel 용 Kutools를 지금 다운로드하고 무료로 평가하십시오!


더 많은 관련 기사 :

  • 일부 기본 및 고급 예제가 포함 된 VLOOKUP 함수
  • Excel에서 VLOOKUP 함수는 대부분의 Excel 사용자에게 강력한 함수로, 데이터 범위의 가장 왼쪽에있는 값을 찾고 지정한 열의 동일한 행에서 일치하는 값을 반환하는 데 사용됩니다. 이 자습서에서는 Excel의 기본 및 고급 예제와 함께 VLOOKUP 함수를 사용하는 방법에 대해 설명합니다.
  • 하나 또는 여러 기준에 따라 여러 일치 값 반환
  • 일반적으로 VLOOKUP 함수를 사용하면 특정 값을 조회하고 일치하는 항목을 반환하는 것이 대부분 쉽습니다. 그러나 하나 이상의 기준에 따라 여러 일치 값을 반환하려고 시도한 적이 있습니까? 이 기사에서는 Excel에서이 복잡한 작업을 해결하기위한 몇 가지 공식을 소개합니다.
  • Vlookup 및 세로로 여러 값 반환
  • 일반적으로 Vlookup 함수를 사용하여 첫 번째 해당 값을 가져올 수 있지만 때로는 특정 기준을 기반으로 일치하는 모든 레코드를 반환하려고합니다. 이 기사에서는 일치하는 모든 값을 수직, 수평 또는 단일 셀로 vlookup하고 반환하는 방법에 대해 설명합니다.
  • 드롭 다운 목록에서 Vlookup 및 여러 값 반환
  • Excel에서 드롭 다운 목록에서 여러 해당 값을 조회하고 반환하는 방법은 드롭 다운 목록에서 하나의 항목을 선택하면 모든 관련 값이 한 번에 표시됨을 의미합니다. 이 기사에서는 솔루션을 단계별로 소개합니다.

최고의 사무 생산성 도구

Excel용 Kutools는 대부분의 문제를 해결하고 생산성을 80% 증가시킵니다.

  • 재사용: 빠르게 삽입 복잡한 공식, 차트 그리고 이전에 사용한 모든 것; 셀 암호화 암호로; 메일 링리스트 생성 이메일 보내기 ...
  • 슈퍼 포뮬러 바 (여러 줄의 텍스트와 수식을 쉽게 편집 할 수 있습니다.) 레이아웃 읽기 (많은 수의 셀을 쉽게 읽고 편집합니다.) 필터링 된 범위에 붙여 넣기...
  • 셀 / 행 / 열 병합 데이터 손실없이; 셀 내용 분할; 중복 행 / 열 결합... 중복 셀 방지; 범위 비교...
  • 중복 또는 고유 선택 행; 빈 행 선택 (모든 셀이 비어 있음); 슈퍼 찾기 및 퍼지 찾기 많은 통합 문서에서; 무작위 선택 ...
  • 정확한 사본 수식 참조를 변경하지 않고 여러 셀; 참조 자동 생성 여러 시트에; 글 머리 기호 삽입, 확인란 등 ...
  • 텍스트 추출, 텍스트 추가, 위치 별 제거, 공간 제거; 페이징 부분합을 만들고 인쇄합니다. 셀 내용과 주석 간 변환...
  • 슈퍼 필터 (다른 시트에 필터 구성표 저장 및 적용) 고급 정렬 월 / 주 / 일, 빈도 등 특수 필터 굵은 기울임 꼴로 ...
  • 통합 문서와 워크 시트 결합; 키 열을 기반으로 테이블 병합; 데이터를 여러 시트로 분할; xls, xlsx 및 PDF 일괄 변환...
  • 300개 이상의 강력한 기능. Office / Excel 2007-2021 및 365를 지원합니다. 모든 언어를 지원합니다. 기업 또는 조직에서 쉽게 배포할 수 있습니다. 전체 기능은 30일 무료 평가판입니다. 60일 환불 보장.
kte 탭 201905

Office Tab은 Office에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다.

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50% 높이고 매일 수백 번의 마우스 클릭을 줄입니다!
officetab 하단
코멘트 (43)
아직 평가가 없습니다. 가장 먼저 평가하세요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이 수식을 조정하여 각 반환된 값을 ", "로 구분하고 고유한 값만 반환하려면 어떻게 해야 합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
코드 감사합니다!!

와일드 카드의 경우 INSTR을 사용하는 방법이 있습니다.

[ If rng = pValue Then ]을 [ InStr(1, rng.Value, pValue) Then ]로 바꿀 수 있으며 대소문자를 구분하지 않으려면 [ InStr(1, rng.Value, pValue, vbTextCompare) 그런 다음 ]
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
위의 VBA 코드에 감사드립니다. Alt-Enter 300 400 1000 1300과 같이 결과를 셀의 새 줄에 입력하는 방법을 알려주실 수 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
위의 코드를 공유해 주셔서 감사합니다. 나는 이것을 몇 달 동안 사용했지만 오늘은 작동하지 않는 것 같습니다. 반환할 데이터가 있을 때 일반적인 오류 대신 빈 셀이 표시됩니다. 이견있는 사람?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
멋진 작품.. 정확히 내가 원하는 것을 얻었습니다 !!! 사랑해!!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 저는 이 기능을 사용하기 위해 매우 쉽게 만들 수 있는 작업에 깊은 인상을 받았습니다. 그러나 추가 지원이 필요합니다. 나의 ? 내 vlookup 배열에 여러 셀이 있는 셀에서 숫자를 선택하는 방법입니다. 즉, 셀 A1 = 100, A2 = 350, A3 = 69 C1 = 100인 경우; 1222; 12133 C2 = 69; 222 D1 = Apple D2 = 바나나 그래서 테이블 배열 열 C에서 100을 선택하여 대응하는 D1 = 사과를 파생시키는 방법은 ";"으로 구분된 내 조회 값과 테이블 배열에 7자리 숫자가 있다는 점에 유의하십시오. 이 문제를 해결하고 많은 시간을 절약할 수 있도록 도와주시면 정말 감사하겠습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
VBA 코드 감사합니다. 나는 내가 원하는 것을 정확히 얻었다! " rng.Offset(0, pIndex - 1) " 코드만 " rng.Offset(0, pIndex - 2) " 로 수정했습니다. MYVLOOKUP도 오른쪽에서 왼쪽으로 검색할 수 있습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이것이 바로 내가 찾던 것이며, 나만의 UDF를 만들 생각이 아닙니다. 그러나 VLOOKUP처럼 정확하게 작동하지 않습니다. 찾고 있는 문자열이 첫 번째 열에만 있지 않으면 전달된 원래 범위를 벗어난 데이터를 제공할 수 있습니다. 이름 번호 다른 이름 통과 범위에 없는 열 Jay 1 Jay 1 Jay 2 Jay 2 Chris 3 Chris 3 Jorge 4 Jorge 4 Jay 5 Jay 5 Jorge 6 Jorge 6 위의 표가 셀 A1:D7인 경우 A1:C7만 통과한 경우 "MYVLOOKUP" 함수는 1 1 2를 반환할 것으로 예상할 때 2 5 5 1 2 5를 반환합니다. 아래 변경 사항은 문제를 수정합니다. Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long) 'Update 20150310 'Updated 6 /9/16 Jay Coltrain 'Dim rng As Range Dim xResult As String xResult = "" Dim Rows As Long, i As Long Rows = pWorkRng.Rows.Count For i = 1 To Rows If pWorkRng.Cells(i, 1). Value = pValue then xResult = xResult & " " & pWorkRng.Cells(i, 1).Offset(0, pIndex - 1) End If Next i 'For Each rng In pWorkRng ' If rng = pValue Then ' xResult = xResult & " " & rng.Offset(0, pIndex - 1) ' End If 'Next MYVLOOKUP = xResult End Function
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이것은 훌륭하게 작동하지만 결과에서 중복을 제거하는 명령에 대한 도움이 필요합니다. 정말 대단합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이것은 훌륭하게 작동하지만 결과에서 중복을 제거하려면 명령 기능에 대한 도움이 여전히 필요합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
후속 댓글 알림
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
아무것도 반환하지 않습니다! MYLOOKUP을 적용한 후 결과는 없지만 공백이 있습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 잘 작동합니다. 내가 하고 싶은 것은 값 결과를 "///" 또는 다른 마커로 구분하도록 코드를 조정하는 것입니다(기술적인 이유로 단일 문자 구분 기호는 원하지 않습니다). 또한 이 수식은 와일드 카드와 함께 작동하지 않는다는 것을 알았습니다. 내가 너무 많이 요구한다는 것을 알고 있지만 =myvlookup("*"&E6&"*",$A$2:$C$15,2) 검색할 때 vlookup이 작동할 수 있으므로 수행할 수 없습니다. 도움이 되셨나요?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
주의. 해당 출력에서 ​​구분 기호를 얻는 방법을 알아냈습니다. 그것의 기초. 그러나 나는 그것을 알아 냈습니다. xResult = xResult & "///" & rng.Offset(0, pIndex - 1) 하지만 마지막으로 가장 원하는 것은 검색 기준에서 와일드카드와 함께 작동할 수 있게 하는 것입니다. 이 아름답고 훌륭한 솔루션에 다시 한 번 감사드립니다. 매우 도움이 됩니다. 이제 매크로를 실행하고 내가 무엇을 하든 내 엑셀에 영구적으로 설치하여 필요할 때 사용할 수 있기를 원합니다. 그리고 와일드카드! 정말 감사합니다. 와일드카드만 남았습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
고유한 레코드를 얻으려면 다음을 사용할 수 있습니다. (다른 사용자 코드 참조로 수정됨) Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long) 'Update 20150310 'Updated 6/9/16 Jay Coltrain 'Dim rng As Range Dim xResult As String xResult = "" Dim Rows As Long, i As Long Rows = pWorkRng.Rows.Count For i = 1 To Rows If pWorkRng.Cells(i, 1).Value = pValue then xResult = xResult & "," & pWorkRng.Cells(i, 1).Offset(0, pIndex - 1) End If Next i Dim varSection As Variant Dim sTemp As String Dim sDelimiter As String sDelimiter = "," Split(xResult, sDelimiter)의 각 varSection에 대해 If InStr(1, sDelimiter & sTemp & sDelimiter, sDelimiter & varSection & sDelimiter, vbTextCompare) = 0 다음 sTemp = sTemp & sDelimiter & varSection End If Next varSection MYVLOOKUP = Mid(sTemp) Ender + Len(s1
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이것은 완벽하게 작동했지만 20개 탭, 50k+ 라인 스프레드시트 내에서 함수가 제대로 작동하도록 하는 데 시간이 좀 걸렸습니다. 이제 가장 큰 문제는 구분된 문자열을 사용하고 각 항목을 다른 데이터 세트의 색인/일치(색인/일치와 결혼하지 않았지만 더 빠른 것처럼 보임) 조회 값으로 사용하여 모든 반환의 SUM 값을 하나의 셀로 반환하는 방법입니다. . 제 시나리오는 여러 송장이 ​​있는 단일 주문이 있다는 것입니다. MYVLOOKUP 기능은 하나의 셀에 있는 모든 송장을 보고하도록 훌륭하게 작동합니다. 지금 내가 하고 싶은 것은 보고된 셀과 연결된 각 수익을 가져와서 해당 배열을 살펴보고 각 송장의 지불 금액을 수식 셀로 다시 합산하는 것입니다. 이에 대해 귀하가 제공할 수 있는 모든 도움에 감사드리며 MYVLOOKUP 기능에 감사드립니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
무엇을 하든 나는 항상 #value를 얻는다! 결과 대신 반환됩니다. vlookup은 잘 작동하므로 데이터가 작동합니다. 이미 매크로 활성화 프로세스를 따랐습니다. 심지어 모든 것을 한 장에 합쳤습니다. 어떤 아이디어??
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
유용한 매크로입니다. 그러나 2가지 기준을 확인하기 위해 수정할 수 있는지 알아야 하며 어쨌든 와일드 카드가 작동하도록 하는 사람이 있는지 알아야 합니다. 도움이 되셨나요?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
1000 1000 -1000을 표시하는 대신 1,000/1,000/(1,000)과 같이 결과를 수정하는 방법이 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
훌륭한 기능이지만 100,000개의 레코드를 통해 청크하는 것은 내 가난한 랩톱에 약간 많은 것으로 판명되므로 밤새 실행해야 합니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
대단합니다, 감사합니다!
아직 코멘트가 없습니다
더보기
여러분의 의견을 남겨
게스트로 게시
×
이 게시물 평가 :
0   등장 인물
추천 위치

Follow Us

저작권 © 2009 - WWW.extendoffice.com. | 판권 소유. 에 의해 구동 ExtendOffice. | | 사이트 맵
Microsoft 및 Office 로고는 미국 및 / 또는 기타 국가에서 Microsoft Corporation의 상표 또는 등록 상표입니다.
Sectigo SSL로 보호