2011-03-04 5 views
0

는 I는 I이 사용하는 식을 시도하고했다 & 열엑셀 VBA CONCATENATE 열 1 2

 
Column1 Column2 
123  Value1 
456  Value1 
789  Value2 
101  Value2 
234  Value2 
567  Value3 
890  Value4 

I would like to concatenate column1 based on column2 range like: 

Column3 
123 
123,456 
789 
789,101 
789,101,234 
567 
890 

아래와 같이 행 세트가 있지만처럼 더 좋은 방법은 (존재 매크로) 이렇게하려면?

= IF (B2 = B1, C1 & ","& C2, C2)

각 값

+0

당신이 '더 나은'로 간주 VBA를 솔루션에 대해 무엇입니까? 수식은 매우 간단하고 쉽고 컴팩트 한 것 같습니다. –

답변

0

음의 마지막 행은 선택이 매크로 그것을 할 것이다. 나는 그것이 더 좋았다라고 반드시 말할 것이다!

Sub Macro1() 
    Dim Source As Range 
    Dim Control As Range 
    Dim Output As Range 
    Set Source = Range("A1") 
    Set Control = Range("B1") 
    Set Output = Range("C1") 
    Dim StoreHere As String 
    Dim Row As Integer 
    Dim AddItOn As Boolean 

    Row = 1 
    StoreHere = "" 

    While (Not (IsEmpty(Source.Cells(Row, 1)))) 
     If (Row > 1) Then 
      If (Control.Cells(Row, 1) = Control.Cells(Row - 1, 1)) Then 
       AddItOn = True 
      Else 
       AddItOn = False 
      End If 
     Else 
      AddItOn = False 
     End If 

     If (AddItOn = True) Then 
      StoreHere = StoreHere & "," & Source.Cells(Row, 1) 
     Else 
      StoreHere = Source.Cells(Row, 1) 
     End If 

     Output.Cells(Row, 1).NumberFormat = "@" 
     Output.Cells(Row, 1) = StoreHere 
     Row = Row + 1 
    Wend 
End Sub 
+0

와우 !! 그것은 매력처럼 작동했습니다.이 덕분입니다. – Ara

0

여기에 작은 옵션

Sub Macro1() 
    Dim cl As Range 

    Set cl = [A1] ' set to where your data starts 
    Do While cl <> "" 
     If cl.Cells(1, 2) = cl.Cells(0, 2) Then 
      cl.Cells(1, 3) = cl.Cells(0, 3) & "," & cl 
     Else 
      cl.Cells(1, 3) = CStr(cl) 
     End If 
     Set cl = cl.Cells(2, 1) 
    Loop 
End Sub