2017-11-28 51 views
0

셀의 값 B1:K1을 연결하여 A1의 문자열을받을 수있는 방법은 무엇입니까? 빈 셀은 생략해야합니다. Excel 명령을 사용하거나 vba에서만 사용할 수 있습니까?Excel : 셀 연결 및 중복 제거

enter image description here

+0

아마 더 우아한 해결 방법이 있습니다하지만 당신은 단지 CONCATENATE, 또는 앰퍼샌드을 사용할 수 = B1 C1 및 D1 및 E1 및 F1 & G1 & H1 & I1 & J1 및 Excel이 사용하고있는 K1 – Absinthe

+1

&? –

+0

> = Excel 2016을 사용한다면'TEXTJOIN' [link] (https://www.techonthenet.com/excel/formulas/textjoin.php) – Tom

답변

1

는 Office 365 Excel이 다음 TEXTJOIN의 배열 형태로 사용할 수있는 경우 : 그것은으로 확인 될 필요가 배열 인

=TEXTJOIN(", ",TRUE,INDEX(1:1,,N(IF({1},MODE.MULT(IF((IFERROR(MATCH(B1:K1,B1:K1,0)=COLUMN(B1:K1)-MIN(COLUMN(B1:K1))+1,0))*(B1:K1<>""),COLUMN(B1:K1)*{1;1})))))) 

을 Ctrl 키 Shift 키를 입력하는 대신 때 입력 편집 모드를 종료합니다. 당신이 사무실 365 엑셀이없는 경우

enter image description here


당신은 VBA가 필요합니다. 이 UDF는 TEXTJOIN을 모방합니다. 통합 문서에 첨부 된 모듈에 넣고 위에 설명 된 수식을 사용하십시오.

Function TEXTJOIN(delim As String, skipblank As Boolean, arr) 
    Dim d As Long 
    Dim c As Long 
    Dim arr2() 
    Dim t As Long, y As Long 
    t = -1 
    y = -1 
    If TypeName(arr) = "Range" Then 
     arr2 = arr.Value 
    Else 
     arr2 = arr 
    End If 
    On Error Resume Next 
    t = UBound(arr2, 2) 
    y = UBound(arr2, 1) 
    On Error GoTo 0 

    If t >= 0 And y >= 0 Then 
     For c = LBound(arr2, 1) To UBound(arr2, 1) 
      For d = LBound(arr2, 1) To UBound(arr2, 2) 
       If arr2(c, d) <> "" Or Not skipblank Then 
        TEXTJOIN = TEXTJOIN & arr2(c, d) & delim 
       End If 
      Next d 
     Next c 
    Else 
     For c = LBound(arr2) To UBound(arr2) 
      If arr2(c) <> "" Or Not skipblank Then 
       TEXTJOIN = TEXTJOIN & arr2(c) & delim 
      End If 
     Next c 
    End If 
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) 
End Function 
+0

감사합니다! 잘 했어! – user969113