2015-01-22 3 views
2

두 개의 공백으로 구분 된 셀 값 범위를 다른 셀에 연결하는 데는 vba 코드가 필요합니다.
예 :한 셀의 셀 범위를 두 개의 공백으로 구분하는 방법

 
a1 a 
a2 b 
a3 c 
a4 blank 
a5 blank 
a6 d 
a7 e 
a8 f 

다음 셀 B의 값

 
b1 a,b,c 
b2 d,e,f 

이 코드는 하나의 범위와 CONCAT 공간 concats 될 것이다. 나는 공간을 구분 기호로 만들고 공간을 따라 범위를 연결하고 그것을 통해 반복합니다.

Sub demo() 
    'i = 2 
    'if cells(i,2).value 
    Dim lastRow As Long 
    lastRow = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row 
    MsgBox (lastRow) 
    For i = 2 To lastRow 
     'Do Until Cells(i, 2).End(xlDown).Row = "" 
     If Cells(i, 3).Value = "" Then 
      Sheet2.Cells(i, 1).Value = Cells(i, 1) & " " & Cells(i, 2) 
     Else 
      Sheet2.Cells(i, 1).Value = Cells(i, 1) & " " & _ 
       Cells(i, 2) & "(" & Cells(i, 3) & ")" 
     End If 
     ' i = i + 1 
    Next i 
End Sub  

답변

0

시도해 볼 수 있습니다. 이렇게하면 첫 번째 문제가 해결됩니다. 두 번째 부분에 다른 문제를 제시하거나 첫 번째 부분을 설명하려고하는 경우 이해가되지 않습니다. 어쨌든, 서브는 싱글을 처리 범위의 일부로 공백으로 취급합니다. 그림의 출력 예.

입력 범위를 변경하십시오 (아래 "A1 : A30"). 결과를 입력 데이터에 인접한 컬럼에 넣습니다.

Public Sub spaced_out() 

Dim rr, Ain As Range 
Dim AB As Object 

Dim rr_out_count As Integer 

Set Ain = ActiveSheet.Range("A1:A30") 
Set AB = CreateObject("scripting.dictionary") 

For Each rr In Ain 
    If (rr.Value <> "") Then 
      AB.Add rr.Row(), rr.Value 
    ElseIf (rr.Value = "" And rr.Offset(1, 0).Value = "") Then 
      rr_out_count = rr_out_count + 1 
      Ain.Offset(0, 1).Cells(rr_out_count, 1).Value = Join(AB.items(), ",") 
      AB.RemoveAll 
    End If 
Next 


End Sub 

enter image description here

+0

주셔서 감사 솔루션에 대한 많은 ... 괜찮했다. 비록 몇 가지 시도 후 나도이 솔루션을 해결했습니다 .. 다시 고마워요 그리고 엄지 손가락 .. –

관련 문제