2016-10-18 3 views
1

와 함께 아래로 구분. 출력에있는 모든 셀을 복사하십시오. 조바꿈을 사용하여 붙이기. 그런 다음 col A를 드래그하여 공백을 아래쪽으로 채 웁니다.엑셀 변환 쉼표 내가이 작업을 수행하기 위해 노력하고있어 다른 열

는 쉬운 방법 :(

+0

단일 셀을 분할 한 다음 결과 배열을 반복하고 각 요소에 대해 새로운 행을 만들 수 있습니다. – flohdieter

+0

예, VBA라고합니다. 이를 수행하는 루틴을 코딩해야합니다. –

+0

수식을 사용하여 하나 또는 두 개의 도우미 열을 사용하여 수행 할 수 있지만 VBA는 단지 몇 줄에 불과합니다. –

답변

1

나는 당신이 또한 도우미 컬럼의 부부와 함께 공식하여이 작업을 수행 할 수있는 의견 항에와보고 싶어 (A) 그게 사실이고 경우 (b)에 얼마나 어려운지는 것 대답은 (a) 예, 바로 그랬고 (b) 매우 (복잡한 공식에 더 숙련 된 사람들이 나와 있습니다. 그래서 도우미 열이 당신이 어떤 긴 수식이 필요한이

Column C (i) is source row 
Column D (j) is string number within source row 

그러나 달성하기 위해 VBA에서 내가 년대와 J의처럼

enter image description here

- : 여기

은 결과입니다 .

C7 및 C8은 D8 1.

에 하드 코딩되어있다 : -

C8에서
=IF(C7="","",IF(D7<LEN(INDEX(B$2:B$4,C7))-LEN(SUBSTITUTE(INDEX(B$2:B$4,C7),",",""))+1,D7+1,IF(C7=ROWS($B$2:$B$4),"",1))) 

- B7에서

=IF(D8="","",IF(D8>D7,C7,C7+1)) 

-

=IF(C7="","",MID(","&INDEX(B$2:B$4,C7)&",",FIND("<",SUBSTITUTE(","&INDEX(B$2:B$4,C7)&",",",","<",D7))+1,FIND(">",SUBSTITUTE(","&INDEX(B$2:B$4,C7)&",",",",">",D7+1))-FIND("<",SUBSTITUTE(","&INDEX(B$2:B$4,C7)&",",",","<",D7))-1)) 

A7 : -

=IF(C7="","",INDEX($A$2:$A$4,C7)) 

소스 셀에 대한 변경 사항이 대상 셀에 반영되므로 반 동적입니다. 고정 된 소스 범위 $ B $ 2 : $ B $ 4에 묶이지 만 가변적 인 소스 범위에서 상당히 쉽게 작동하도록 변경할 수 있습니다. 숫자가 모두 7 자리라고 가정하지는 않았지만 그렇게했다면 B7의 수식을 단순화합니다.

1

나는 VBA 수식으로 그 일을 비교 얼마나 궁금가 있어야합니다. 여기

은 VBA 샘플입니다하고 스마트 한 방법이 될 수있다하더라도 매우 짧 그 일의 -

Option Explicit 
Public Sub SplitRows() 

Dim a() As String 
Dim r1, r2 As Range 
Dim i, j, k As Integer 
Set r1 = Range("A2:B4") 
Set r2 = Range("A7:B1000") 
j = 1 

For i = 1 To r1.Rows.Count 
    a = Split(r1.Cells(i, 2), ",") 
    For k = LBound(a) To UBound(a) 
     r2.Cells(j, 1) = r1.Cells(i, 1) 
     r2.Cells(j, 2) = a(k) 
     j = j + 1 
    Next k 
Next i 

End Sub 
+0

감사합니다. 그동안, 나는이 데이터를 처리하기 위해 PHP 스크립트를 작성했다. 그래도 XLS 내에서 그렇게하는 것이 좋을 것입니다. XLS에서 VBA를 사용하는 방법을 알아 내야합니다. – Mark

+0

Excel 시트에서 Alt-F11을 누른 다음 모듈을 삽입하고 코드에 붙여 넣으십시오. F5 키를 누릅니다. –

관련 문제