Note: The other languages of the website are Google-translated. Back to English
로그인  \/ 
x
or
x
회원가입  \/ 
x

or

Excel에서 중복없이 여러 값을 조회하고 반환하는 방법은 무엇입니까? 

때로는 vlookup하고 일치하는 여러 값을 한 번에 단일 셀로 반환하려고 할 수 있습니다. 그러나 반환 된 셀에 반복되는 값이 채워지면 Excel에 표시된 다음 스크린 샷과 같이 일치하는 모든 값을 반환 할 때 중복을 무시하고 고유 한 값만 유지할 수 있습니까?

문서는 여러 고유 값을 반환 1

사용자 정의 함수를 사용하여 중복없이 Vlookup 및 여러 일치 값 반환


사용자 정의 함수를 사용하여 중복없이 Vlookup 및 여러 일치 값 반환

다음 VBA 코드는 중복없이 여러 일치 값을 반환하는 데 도움이 될 수 있습니다. 다음과 같이하십시오.

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

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

VBA 코드 : Vlookup 및 여러 고유 일치 값 반환 :

Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
    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 스크립팅 런타임 에서 옵션 사용 가능한 참조 목록 상자, 스크린 샷 참조 :

문서는 여러 고유 값을 반환 2

4. 그런 다음 OK 대화 상자를 닫으려면 코드 창을 저장하고 닫은 다음 워크 시트로 돌아가 다음 수식을 입력합니다. =MultipleLookupNoRept(E2,A2:C17,3) 결과를 출력하려는 ​​빈 셀에 엔터 버튼 필요한 경우 올바른 결과를 얻으려면 키를 누르십시오. 스크린 샷보기 :

문서는 여러 고유 값을 반환 3

주의 사항: 위의 공식에서 E2 vlookup하려는 기준입니다. A2 : C17 사용하려는 데이터 범위, 숫자 3 반환 된 값을 포함하는 열 번호입니다.


최고의 사무 생산성 도구

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

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

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

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50 % 향상시키고 매일 수백 번의 마우스 클릭을 줄입니다!
officetab 하단
Say something here...
symbols left.
You are guest
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.
    skyyang · 1 years ago
    @Jame Hi, Jame,
    Could you give your problem as a screenshot here, so that i can understand your requires?
  • To post as a guest, your comment is unpublished.
    Drew · 1 years ago
    This is great! How would I adapt this to not add null values to the dictionary? I've tried adding the bold below, but the final string is still returning with ,"", instances.


    xRows = LookupRange.Rows.Count
    For i = 1 To xRows
    If LookupRange.Columns(1).Cells(i).Value = Lookupvalue And Not IsEmpty(LookupRange.Columns(1).Cells(i).Value) Then
    xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
    End If
    Next

    Thanks,
  • To post as a guest, your comment is unpublished.
    Jame · 1 years ago
    Hello , I did as u told and it great but it still havent solve one of my problem , what happen when u unique value in each month ? =MultipleLookupNoRept(E2,A2:C17,3) , i try to E2&1 for January but it not working
  • To post as a guest, your comment is unpublished.
    srikanth · 1 years ago
    hi,
    while the time of lot value multivlooks my worksheet got hang.is there any other ways to multivlookupwithoutrepeation????

    and also i used on new desktop also its getting hang only...

    my data value is around 10,000 rows
  • To post as a guest, your comment is unpublished.
    rasike001 · 2 years ago
    Hi

    I wanted to create a list in a table from this instead of all results in one cell. So I have used a formula similar below (what you have suggested)

    =LOOKUP(2, 1/((COUNTIF($E$1:E1, $B$2:$B$12)=0)*($D$2=$A$2:$A$12)), $B$2:$B$12)

    However, this is taking a long time to process from a large set of data.
    Is there any alternative method to process this faster?
    Thanks again
    Rasike
  • To post as a guest, your comment is unpublished.
    rasike001 · 2 years ago
    @skyyang Hi Skyyang,

    Thank you very much for this formula.
    This works for me. However, it is taking a long time to process from a large set of data.
    Can we modify this formula to work this bit faster?
    Thanks again
    Rasike
  • To post as a guest, your comment is unpublished.
    skyyang · 2 years ago
    @Imre Hi, Imre,
    To separate the result values by Alt + Enter keys, please apply the following User Defined Function:

    Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
    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) & Chr(10) + Chr(13)
    Next
    MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
    End If
    Debug.Print xStr
    End Function

    And then do with the above steps in this article, at last, after entering the formula, you should click Wrap Text under the Home tab.
  • To post as a guest, your comment is unpublished.
    Imre · 2 years ago
    xStr = xStr & xDic.Keys(I) & "," to be this: xStr = xStr & xDic.Keys(I) & ", "

    Is there a way to replace "," with in-cell ALT+ENTER, so that the results will be in the same cell but on different lines? Do I need to introduce additional VBA module for that and combine them?

    Also, this code is quite slow when looping over huge tables. Anyone knows any faster solutions?
  • To post as a guest, your comment is unpublished.
    skyyang · 2 years ago
    @Demetre Hello, Demetre,
    Use the space to separate the values, you just need to change the vba code:
    from xStr = xStr & xDic.Keys(i) & "," to be this: xStr = xStr & xDic.Keys(i) & " "

    Please try it.
  • To post as a guest, your comment is unpublished.
    Demetre · 2 years ago
    Is there a way to add a space in between the multiple values retrieved in the results without introducing a comma at the end of the list? For example your result above would show as: "Emily, James, Daisy, Gary" instead of like this: "Emily,James,Daisy,Gary"

    I tried to edit this portion of the VBA code: xStr = xStr & xDic.Keys(I) & "," to be this: xStr = xStr & xDic.Keys(I) & ", "

    That did add the space in between the values, but it also added a comma after the last value. "Emily, James, Daisy, Gary,"

    Is there a way to make it work with the space but without the extra comma after the last value?
  • To post as a guest, your comment is unpublished.
    skyyang · 2 years ago
    @Tom Hello, Tom,
    If you want to extract the unique values in a list of cells instead of one cell, the following formula may help you:

    =LOOKUP(2, 1/((COUNTIF($E$1:E1, $B$2:$B$12)=0)*($D$2=$A$2:$A$12)), $B$2:$B$12)

    Please try it.
  • To post as a guest, your comment is unpublished.
    Tom · 2 years ago
    what if I wanted to create a list in a table from this instead of all results in one cell?