팁 : 다른 언어는 Google 번역입니다. 방문하실 수 있습니다. English 이 링크의 버전.
로그인
x
or
x
x
회원가입
x

or

vlookup을 사용하여 Excel에서 하나의 셀에서 여러 값을 반환하는 방법?

일반적으로 Excel에서 VLOOKUP 함수를 사용할 때 조건과 일치하는 값이 여러 개인 경우 첫 번째 값을 얻을 수 있습니다. 그러나 때로는 아래의 스크린 샷과 같이 기준을 충족하는 모든 값을 하나의 셀로 반환하려는 경우 어떻게 해결할 수 있습니까?

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

Excel 용 kutools를 사용하여 하나의 셀에서 여러 값을 반환하는 Vlookup

doc-vlookup-multiple-values-one-cell-1


하나의 단일 셀에서 여러 개의 해당 값을 반환하는 Vlookup :

Excel 용 Kutools고급 행 결합 유틸리티를 사용하면 여러 개의 중복 된 행을 키 열을 기반으로 하나의 레코드로 신속하게 결합 할 수 있으며 다른 열의 합, 평균, 개수 등과 같은 일부 계산을 적용 할 수도 있습니다.

  • 1. 다른 컬럼을 결합하고자하는 키 컬럼을 지정하십시오.
  • 2. 결합 된 데이터의 구분 기호를 선택하십시오.

doc 기준에 따라 텍스트 결합 10

Excel 용 Kutools: 200 이상의 편리한 Excel 추가 기능으로 60 일 동안 아무런 제한없이 시도 할 수 있습니다. 지금 무료 평가판 다운로드 및 다운로드!

>

전통적인 VLOOKUP 함수는이 문제를 해결하는 데 도움이되지는 않지만이 작업을 처리 할 수있는 사용자 정의 함수를 만듭니다. 다음과 같이하십시오 :

1. 한 셀로 여러 값을 vlookup하려는 워크 시트를 활성화하십시오.

2. 누르고있어. ALT + F11 키를 열면 Microsoft Visual Basic for Applications 창.

3. 딸깍 하는 소리 끼워 넣다 > 모듈다음 코드를 모듈 창.

VBA 코드 : 한 셀에서 여러 값을 반환하는 Vlookup

Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long)
'Update 20150310
Dim rng As Range
Dim xResult As String
xResult = ""
For Each rng In pWorkRng
    If rng = pValue Then
        xResult = xResult & " " & rng.Offset(0, pIndex - 1)
    End If
Next
MYVLOOKUP = xResult
End Function

4. 그런 다음이 코드를 저장하고 닫은 다음 워크 시트로 돌아가서 다음 수식을 입력하십시오. = myvlookup (E6, $ A $ 2 : $ C $ 15,2) 결과를 배치 할 특정 빈 셀에 넣은 다음 엔터 버튼 원하는 하나의 셀에서 모든 해당 값을 가져 오는 키입니다. 스크린 샷을 참조하십시오.

doc-vlookup-multiple-values-one-cell-2

노트 :

위 공식에서 : E6 상대 값을 반환하려는 값입니다. A2 : C15 사용하는 데이터 범위, 숫자 2 일치하는 값이 반환 된 열 번호를 나타냅니다.


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

Excel 용 Kutools : 300 이상의 편리한 Excel 추가 기능으로 60 일 동안 아무런 제한없이 시도 할 수 있습니다..

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

1. 다른 데이터를 기반으로 하나의 열 데이터를 결합 할 데이터 범위를 선택하십시오.

2. 딸깍 하는 소리 Kutools > 함유량 > 고급 행 결합, 스크린 샷보기 :

doc-vlookup-multiple-values-one-cell-5

3. 에서 열을 기준으로 행 결합 대화 상자에서 기반으로 키 열을 클릭 한 다음 확인을 클릭하십시오. 기본 키. 그런 다음 키 열을 기반으로 데이터를 결합하려는 다른 열을 클릭하고 결합 결합 된 데이터를 분리하기위한 하나의 구분 기호를 선택하려면 스크린 샷을 참조하십시오.

doc-vlookup-multiple-values-one-cell-6

4. 그런 다음 OK 버튼을 클릭하면 다음과 같은 결과가 표시됩니다.

doc-vlookup-multiple-values-one-cell-3 -2 doc-vlookup-multiple-values-one-cell-4-4

이 고급 결합 행 기능에 대한 자세한 내용을 보려면 클릭하십시오.

Excel 용 Kutools를 지금 다운로드하여 무료로 사용해보십시오!


Excel 용 Kutools: 200 이상의 편리한 Excel 추가 기능으로 60 일 동안 아무런 제한없이 시도 할 수 있습니다. 지금 무료 평가판 다운로드 및 다운로드!


관련 기사 :

Excel에서 다음으로 큰 값을 vlookup하는 방법은 무엇입니까?

어떻게 Excel에서 2 차원 테이블에 vlookup?

다른 통합 문서를 조회하는 방법은 무엇입니까?


Excel 용 Kutools-최고의 사무 생산성 도구 80 % 생산성 향상

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

Office 탭 Office에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, 게시자, 액세스, Visio 및 프로젝트.
  • 새 창보다는 동일한 창에서 새 탭으로 여러 문서를 열고 만들 수 있습니다.
  • 50 %만큼 생산성을 높이고 매일 수백 번의 마우스 클릭을 줄입니다!
오피셜
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Martin · 15 days ago
    Unfortunately it does not work for me =myvlookup(E6,$A$2:$C$15,2) as the result is #NAME?
  • To post as a guest, your comment is unpublished.
    Steven · 1 months ago
    Thank you. I just modified so that it will replace the comma at the start and replace the last comma with "And".

    (Working with states)

    Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long)

    Dim rng As Range
    Dim xResult, States As String
    Dim Pos As Long
    xResult = ""
    For Each rng In pWorkRng
    If rng = pValue Then
    xResult = xResult & ", " & rng.Offset(0, pIndex - 1)
    End If
    Next
    States = Right(xResult, Len(xResult) - 2)
    Pos = InStrRev(States, ",")

    If Pos > 1 Then
    States = Mid(States, 1, Pos - 1) & Replace(States, ",", " AND", Pos)

    End If

    MYVLOOKUP = States
    End Function
  • To post as a guest, your comment is unpublished.
    Devinder Kaur · 5 months ago
    do we have the code to work it from last to first. like we have multiple values in columnB and we want them in row with column A remain same.
  • To post as a guest, your comment is unpublished.
    Pam · 10 months ago
    For some reason this macro is extremely slow for me, every time I click anywhere it takes about 5-10 minutes to calculate.
  • To post as a guest, your comment is unpublished.
    Alex · 11 months ago
    Tthat's what I wanted! Thank you very much XD
  • To post as a guest, your comment is unpublished.
    Tom T · 1 years ago
    This is amazing, thank you!
  • To post as a guest, your comment is unpublished.
    Mark · 1 years ago
    Great function, however chunking through 100,000 records proves a bit much for my poor laptop, will need to let it run overnight!
  • To post as a guest, your comment is unpublished.
    Will · 1 years ago
    Is there a way of amending the result so instead of showing 1000 1000 -1000 it would show for example 1,000/1,000/(1,000) ?
  • To post as a guest, your comment is unpublished.
    Kabilankumar · 2 years ago
    Great macro, useful.

    But need to know can it be modified to check 2 criteria & does anyone found anyway to make wildcards work on it.

    Any help?
  • To post as a guest, your comment is unpublished.
    Jay · 2 years ago
    No matter what I do, I always get #value! returned instead of a result. vlookup works just fine, so the data works. Already followed the process of enabling macros. I even combined everything into a single sheet. Any ideas??
  • To post as a guest, your comment is unpublished.
    Curtis · 2 years ago
    This worked perfectly, but it did take me some time to get the Function work properly within my 20 tab, 50k+ line spreadsheet.
    Now the BIG question is how to take that delimited string and then use each entry as an Index/Match (not married to Index/Match, but it seems faster) lookup value in another dataset, returning the SUM value of all returns into one cell. My scenario is that I have a Single Order that has multiple invoices. Your MYVLOOKUP Function works superbly to report back all of the invoices in one cell. What I want to do now is to take each concatenated return with the reported cell, spin through that array and total the amounts of payment of each invoice back into the formula cell.

    I appreciate any help that you can offer on this and thanks for the MYVLOOKUP Function!
  • To post as a guest, your comment is unpublished.
    Alex Chow · 2 years ago
    To get unique record, you may use below: (modified by refer other user code)


    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 = ","

    For Each varSection In Split(xResult, sDelimiter)
    If InStr(1, sDelimiter & sTemp & sDelimiter, sDelimiter & varSection & sDelimiter, vbTextCompare) = 0 Then
    sTemp = sTemp & sDelimiter & varSection
    End If
    Next varSection


    MYVLOOKUP = Mid(sTemp, Len(sDelimiter) + 1)
    End Function
  • To post as a guest, your comment is unpublished.
    Spyros Tzortzis · 2 years ago
    Heads-up. I figured out how to get any separator in that output. Its rudimentary. But I figured it out.

    xResult = xResult & "///" & rng.Offset(0, pIndex - 1)

    The last and most wished for thing though is enabling it to work with wildcards in the search criteria. Thank you again for this beautiful and brilliant solution. Extremely helpful. Now just want to get get the macro to run and be installed in my excel perminantly no matter what I'm doing so I can use it when I need to.

    And wildcards!

    Thank you so much.

    Wildcards are all that are left to do.
  • To post as a guest, your comment is unpublished.
    Spyros Tzortzis · 2 years ago
    Hi,

    It works well. What I would like to do is adapt the code to seperate thee value results with "///" or any other marker (for technical reasons, I don't want just a single character seperator).

    Also, I noticed that this formula doesnt work with a wild card. I know i am asking too much, but it doesnt as vlookup can work when i search for =myvlookup("*"&E6&"*",$A$2:$C$15,2) which it would do/could do.

    Any assistance?
  • To post as a guest, your comment is unpublished.
    Ajay · 3 years ago
    Return nothing! after applying MYLOOKUP giving no result but blank.
  • To post as a guest, your comment is unpublished.
    Rob · 3 years ago
    Notify me of follow-up comments
  • To post as a guest, your comment is unpublished.
    cory · 3 years ago
    This works great, but I still need help with the command function to remove duplicates from the results.
  • To post as a guest, your comment is unpublished.
    cory · 3 years ago
    This works great, but I need help with the command to remove duplicates from the results. Seriously though, Great work.
  • To post as a guest, your comment is unpublished.
    Jay · 3 years ago
    This is exactly what I was looking for and did not think of just making my own UDF. However it will not function exactly like VLOOKUP. If the string you are looking for is not only in the first column then it could give you data outside the original range passed.

    Name Number Other name Column not in range passed
    Jay 1 Jay 1
    Jay 2 Jay 2
    Chris 3 Chris 3
    Jorge 4 Jorge 4
    Jay 5 Jay 5
    Jorge 6 Jorge 6

    If the above table were cells A1:D7 if you passed only A1:C7 your "MYVLOOKUP" function returns 1 1 2 2 5 5 when you would expect it to return 1 2 5.

    The changes below fix the issue:

    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
  • To post as a guest, your comment is unpublished.
    Ari · 3 years ago
    Thank you for the VBA-code. I got exactly what I want!

    I modified only the code " rng.Offset(0, pIndex - 1) " to " rng.Offset(0, pIndex - 2) " . So is MYVLOOKUP able to search from Right to Left.
  • To post as a guest, your comment is unpublished.
    Ankit Jain · 3 years ago
    Hi,
    i am really impressed with the work and its so easy to create one to use this function. however i need further support.

    My ? is that how can i select a number from a cell with multiple cell in my vlookup array. i.e.

    If cell A1 = 100, A2 = 350, A3 = 69

    C1 = 100; 1222; 12133
    C2 = 69; 222
    D1 = Apple
    D2 = banana

    So how can select 100 from my table array column C to derive correspondent D1 = apple

    Please note that i have 7 digit numbers in my lookup value and table array which is separated by a ";". I would really appreciate if you can solve this and help me in saving a lot time.
  • To post as a guest, your comment is unpublished.
    Ajay · 3 years ago
    Awesome work.. Got exactly what I want !!! Love it !!
  • To post as a guest, your comment is unpublished.
    Colleen · 3 years ago
    Thank you for sharing the above code. I've been using this for several months now but today it doesn't seem to work. I'm getting blank cells instead of the usual error when there is data to be returned. Any thoughts?
  • To post as a guest, your comment is unpublished.
    David V · 4 years ago
    Thanks for the VBA code above. Can you tell me how to make the results enter onto a new line in the cell, ie like Alt-Enter
    300
    400
    1000
    1300
  • To post as a guest, your comment is unpublished.
    David Atwell · 4 years ago
    How would I adjust this formula to separate each returned value but ", " as well as only return unique values?