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

or

Excel의 기준에 따라 텍스트를 쉽게 연결하는 방법은 무엇입니까?

중복 된 ID 번호 열과 이름 열이있는 경우 왼쪽 스크린 샷에 표시된 고유 ID 번호를 기반으로 이름을 연결하여 기준에 따라 텍스트를 빠르게 결합하려면 어떻게해야합니까? Excel에서합니까?

문서는 기준에 따라 텍스트를 결합 1

사용자 정의 함수를 사용하여 기준에 따라 텍스트 연결

Excel 용 Kutools를 사용하여 기준에 따라 텍스트 연결


텍스트를 고유 한 ID 번호와 결합하려면 먼저 고유 한 값을 추출한 다음 고유 한 ID를 기반으로 이름을 결합하는 사용자 정의 함수를 만들 수 있습니다.

1. 다음 데이터를 예로 들어, 먼저 고유 ID 번호를 추출해야합니다.이 배열 수식을 적용하십시오. =IFERROR(INDEX($A$2:$A$15, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$15), 0)),""),이 공식을 빈 셀 (예 : D2)에 입력 한 다음 Ctrl + Shift + Enter 함께 키, 스크린 샷 참조 :

문서는 기준에 따라 텍스트를 결합 2

: 위의 공식에서 A2 : A15 고유 값을 추출하려는 목록 데이터 범위입니다. D1 추출 결과를 내고자하는 열의 첫 번째 셀입니다.

2. 그런 다음 채우기 핸들을 아래로 끌어 공백이 표시 될 때까지 모든 고유 값을 추출합니다. 스크린 샷을 참조하십시오.

문서는 기준에 따라 텍스트를 결합 3

3. 이 단계에서는 사용자 정의 기능 고유 한 ID 번호를 기준으로 이름을 결합하려면 ALT + F11 키가 열립니다. 응용 프로그램 용 Microsoft Visual Basic 창.

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

VBA 코드 : 기준에 따라 텍스트 연결

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

5. 그런 다음이 코드를 저장하고 닫고 워크 시트로 돌아가이 수식을 셀 E2에 입력합니다. = CONCATENATEIF ($ A $ 2 : $ A $ 15, D2, $ B $ 2 : $ B $ 15, ",") , 스크린 샷 참조 :

문서는 기준에 따라 텍스트를 결합 4

6. 그런 다음 채우기 핸들을이 수식을 적용하려는 셀로 드래그하면 해당하는 모든 이름이 ID 번호를 기반으로 결합되었습니다. 스크린 샷을 참조하십시오.

문서는 기준에 따라 텍스트를 결합 5

팁 :

1. 위의 공식에서 A2 : A15 결합하려는 원본 데이터입니다. D2 추출한 고유 한 값입니다. B2 : B15 함께 결합하려는 이름 열입니다.

2. 보시다시피 쉼표로 구분 된 값을 조합하여 필요에 따라 수식의 쉼표 ","를 변경하여 다른 문자를 사용할 수 있습니다.


당신이 있으면 Excel 용 Kutools그와 고급 결합 행 유틸리티를 사용하면 기준에 따라 텍스트 기반을 빠르고 편리하게 연결할 수 있습니다.

Excel 용 Kutools : 300 개 이상의 편리한 Excel 추가 기능으로 30 일 동안 제한없이 무료로 사용해 볼 수 있습니다..

설치 후 Excel 용 Kutools, 다음 단계를 수행하십시오.

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

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

3. 에서 열을 기준으로 행 결합 대화 상자에서 ID 열을 클릭 한 다음 기본 키 이 열을 결합 된 데이터의 기반이되는 키 열로 만들려면 스크린 샷을 참조하십시오.

문서는 기준에 따라 텍스트를 결합 7

4. 그런 다음 이름 값을 결합하려는 열을 클릭 한 다음 결합 옵션을 선택하고 결합 된 데이터에 대해 하나의 구분 기호를 선택합니다. 스크린 샷을 참조하십시오.

문서는 기준에 따라 텍스트를 결합 8

5. 이 설정을 마친 후 OK 대화 상자를 종료하고 B 열의 데이터는 키 A 열을 기준으로 결합되었습니다. 스크린 샷 참조 :

문서는 기준에 따라 텍스트를 결합 9

이 기능을 사용하면 가능한 한 빨리 다음 문제가 해결됩니다.

여러 행을 하나로 결합하고 Excel에서 중복을 합하는 방법은 무엇입니까?

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


Excel 용 Kutools: 300 개 이상의 편리한 Excel 추가 기능으로 30 일 동안 제한없이 무료로 사용해 볼 수 있습니다. 지금 다운로드 및 무료 평가판!

최고의 사무 생산성 도구

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.
    Md. Zaker Hossain · 1 months ago
    @skyyang It worked like a charm sir. Thank you so much.
  • To post as a guest, your comment is unpublished.
    skyyang · 1 months ago
    @Md. Zaker Hossain Hi, Hossain,
    May be there is not a direct method for solving your problem, you can add another formula to convert the last comma to the text "and".
    =SUBSTITUTE(E2,","," and ",LEN(E2)-LEN(SUBSTITUTE(E2,",","")))
    Please try, thank you!
  • To post as a guest, your comment is unpublished.
    Md. Zaker Hossain · 1 months ago
    Is there any way to add "and" instead of "," before the last data? (For example: D2355, D2273, D2397, D2600 and D2386)
  • To post as a guest, your comment is unpublished.
    AA · 4 months ago
    Great function, exactly what I needed! Works like a charm
  • To post as a guest, your comment is unpublished.
    AS · 1 years ago
    Hi,

    Very helpful VBA solution. Thank you kindly! My question is: Is there a way to change the code or function for multiple criteria? Although the code works for me, I need it to show values corresponding to a timestamp-interval (>= timestamp A, <= timestamp B)


    Thank you in advance. :)
  • To post as a guest, your comment is unpublished.
    Pete · 2 years ago
    Is there a way to assign this to a button? On large data ranges it takes a while, so ideally I only want it to start the concatenate process once I've finished doing everything else in the sheet. I tried adding a trigger myself but it stopped working completely
  • To post as a guest, your comment is unpublished.
    Merijn · 2 years ago
    BTW i used the VBA solution
  • To post as a guest, your comment is unpublished.
    Merijn · 2 years ago
    Extremely helpfull! After editing it for my sheet i have #VALUE! for some of the unique values.
    I did a countif to see if it could be that there are too many names to concatenate. The two unique values that have the #VALUE! error have 13635 and 19810 results. Is there a way to overcome this?
  • To post as a guest, your comment is unpublished.
    skyyang · 2 years ago
    @cadrose97 Hello, Chantelle
    When concatenating the cell values ignoring the blank cells, please apply the below User Defined Function:

    Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
    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
    If ConcatenateRange.Cells(i).Value <> "" Then
    xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
    End If
    End If
    Next i
    If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
    End If
    ConcatenateIf = xResult
    Exit Function
    End Function

    Please try it, hope it can help you!
  • To post as a guest, your comment is unpublished.
    cadrose97 · 2 years ago
    How can I ignore blank cells? mine currently displays this:

    ";2503201111@msg.telus.com;;2503202222@msg.telus.com;2508193333@msg.telus.com;2503714444@msg.telus.com;;;;"

    I'd like for the 1st, 3rd and last 3 semi colons not to there/show. TIA
  • To post as a guest, your comment is unpublished.
    victor · 2 years ago
    thank you very much! This was so simple and helped a lot!!
  • To post as a guest, your comment is unpublished.
    skyyang · 2 years ago
    @David Hello, David,

    To combine the cells with line break, the following User Defined Function may help you.

    Function ConcatenateIf_LineBreak(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
    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 & vbCrLf & ConcatenateRange.Cells(I).Value
    End If
    Next I
    If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
    End If
    ConcatenateIf_LineBreak = xResult
    Exit Function
    End Function

    After pasting this code, then apply this formula: =ConcatenateIf_LineBreak(A2:A13,F2,B2:B13,",").

    After getting the results with this formula, you should click the Wrap Text to get the correct results you need.
  • To post as a guest, your comment is unpublished.
    David · 2 years ago
    Is it possible to replace the comma splitter with a line break, i.e. char(10)? Many thanks.
  • To post as a guest, your comment is unpublished.
    Ahmed · 2 years ago
    So Easy, thank you :)
  • To post as a guest, your comment is unpublished.
    minhtien1900@gmail.com · 3 years ago
    Hi guys , I got an error #NAME? when I apply formulas CONCATENATEIF in excel file after set VBA code for this, could anyone help me to solve it , thanks som uch
  • To post as a guest, your comment is unpublished.
    al.boulley@gmail.com · 3 years ago
    @krawlis Yes, what you want to do is add the function to a module. Go into the VBA editor, right-click on "VBAProject" in the Project Explorer, mouse over the "Insert" menu item, and in that submenu choose "Module". Any functions you put in there will be useable on any sheet in your workbook.
  • To post as a guest, your comment is unpublished.
    krawlis · 3 years ago
    Is there a way to apply this CONCATENATEIF function in a separate sheet? It works when I put it in the same sheet as input data, but i need both tables in different sheets and it doesn't work.
  • To post as a guest, your comment is unpublished.
    MIchele · 3 years ago
    Is there a way to do this on Mac????
    It's exactly what I need - please let me know (or if any mac software would do it that you know of). Thx
  • To post as a guest, your comment is unpublished.
    Yash · 3 years ago
    @DJDave Wow!! Genius! Worked like a charm! There ARE come spaces that show as a different character. Thanks a lot Dave! Wonder how you came up with the idea! Also, wonder how it works for some other peeps..Anyway, thanks again!
  • To post as a guest, your comment is unpublished.
    DJDave · 3 years ago
    @Yash The code uses some non-breaking spaces for indentation, these trip up Excel2016. Hard to spot an invisible error..
  • To post as a guest, your comment is unpublished.
    DJDave · 3 years ago
    I had a problem after pasting this code into Excel 2016 - it contains non-regular spaces (perhaps non-breaking spaces?) which throw up syntax errors which are not evident no matter how closely you look because they are invisible! It is the indentation spaces that are the problem. Paste the code into Word and turn on hidden characters to see them.
  • To post as a guest, your comment is unpublished.
    Chris · 3 years ago
    @Ram Bahadur Ale Works great just slow. I am doing it with 27k lines of text in excel just set it off go for a brew and leave it to run
  • To post as a guest, your comment is unpublished.
    Yash · 4 years ago
    Hi!

    concactenateif is Exactly what I was looking for. But unfortunately can´t get it to work Always get a compile error:syntax error. Any ideas?

    In the past, with some imported VBA modules, I have noticed that I had to replace the "," by ";" as in my PC, maybe owing to my regional settings, that's the only way it works. Avidly use the built in sumifs etc. But can´t understand where am going wrong on this one.

    One more possibility that comes to mind is the fact that in office 365, "concat" replaces "concactenate". Can you help out please?

    Thanks in advance,

    Yash
  • To post as a guest, your comment is unpublished.
    Ram Bahadur Ale · 4 years ago
    It does not work for the big data range. I found that its working datarange is up to A2:A362. We would be grateful if you share the solution to cover the wider data range like A2:A200000 .....
    Thank you
  • To post as a guest, your comment is unpublished.
    Ram Bahadur Ale · 4 years ago
    It does not work for the big data range. I found it's working range is only up to A2:A362. We would be grateful if you share the solution for the big data range like A2:A200000 ....

    Thank you
  • To post as a guest, your comment is unpublished.
    ConfusedNBusy · 4 years ago
    @Enrique Thanks for posting this is exactly what I am looking for. I seem not to be saving the vba code correctly. I am getting an error message about ambiguous name found.

    Any suggestions or step by step on the VBA step of this project?

    Thanks
  • To post as a guest, your comment is unpublished.
    nickado · 4 years ago
    Great!!! Thank you so much!
  • To post as a guest, your comment is unpublished.
    Matt · 4 years ago
    Awesome, thank you! I used the VBA solution and it worked great.
  • To post as a guest, your comment is unpublished.
    Samrat Govekar · 4 years ago
    Extremely helpful and nicely explained
  • To post as a guest, your comment is unpublished.
    Samrat Govekar · 4 years ago
    Explained in detailed and easy to understand, really helped when i was stuck at exact same situation.
  • To post as a guest, your comment is unpublished.
    latha · 5 years ago
    Taking more time for updating the same concatenateif() formula. i have 5000 rows. and its more than 2 hrs now its still updating :(

    Any resolution to make it work fast?
  • To post as a guest, your comment is unpublished.
    Renee · 5 years ago
    I am looking for a way to use a variation of this code to create a variant list based on master variant. Using your example data, I would need to combine columns A and B into unique identifiers and then concatenate those identifiers to each row based on the value in column A, excluding the value from from the combined for that row, and the rest in alpha sort order:

    Master id name id variant list
    CN20150012 Lucy CN20150012-Lucy CN20150012-Andy CN20150012-Monica CN20150012-Phiby
    US20150011 Tommas US20150011-Tommas US20150011-Rose
    CN20150012 Monica CN20150012-Monica CN20150012-Andy CN20150012-Lucy CN20150012-Phiby
    CN20150012 Phiby CN20150012-Phiby CN20150012-Andy CN20150012-Lucy CN20150012-Monica
    US20150011 Rose US20150011-Rose US20150011-Tommas
    UK20150014 Peter UK20150014-Peter UK20150014-Anith UK20150014-Kristi UK20150014-Libin
    JP20150010 Ramon JP20150010-Ramon JP20150010-Brenda JP20150010-James
    UK20150014 Libin UK20150014-Libin UK20150014-Anith UK20150014-Kristi UK20150014-Peter
    UK20150014 Anith UK20150014-Anith UK20150014-Kristi UK20150014-Libin UK20150014-Peter
    JP20150010 James JP20150010-James JP20150010-Brenda JP20150010-James JP20150010-Matus
    CN20150012 Andy CN20150012-Andy CN20150012-Lucy CN20150012-Monica CN20150012-Phiby
    UK20150014 Matus UK20150014-Matus JP20150010-Brenda JP20150010-James
    UK20150014 Kristi UK20150014-Kristi UK20150014-Anith UK20150014-Libin UK20150014-Peter
    JP20150010 Brenda JP20150010-Brenda JP20150010-James JP20150010-Ramon

    I have a sheet with over 1000 lines, each item comes with up to 4 variants. Trying to do this manually is impossible but I cannot find a solution that fits my needs.
  • To post as a guest, your comment is unpublished.
    Tim Blosser · 5 years ago
    This VBA code saved the day for me. Thank you!
  • To post as a guest, your comment is unpublished.
    Manoj · 5 years ago
    Will this tool be able to handle case sensitive combinations such as

    jABC 123
    abc 345
    ABc 678
    ABC 912
  • To post as a guest, your comment is unpublished.
    Enrique · 5 years ago
    Thanks for this code. It was EXACTLY what I needed. You saved me a lot of effort, thank you so much.
  • To post as a guest, your comment is unpublished.
    Kaladhar · 5 years ago
    This is an excellent solution (VBA code) and it addressed my requirements in minutes. I will refer your site to others and I will visit for everything that I need going forward.