와 함께 아래로 구분. 출력에있는 모든 셀을 복사하십시오. 조바꿈을 사용하여 붙이기. 그런 다음 col A를 드래그하여 공백을 아래쪽으로 채 웁니다.엑셀 변환 쉼표 내가이 작업을 수행하기 위해 노력하고있어 다른 열
는 쉬운 방법 :(
와 함께 아래로 구분. 출력에있는 모든 셀을 복사하십시오. 조바꿈을 사용하여 붙이기. 그런 다음 col A를 드래그하여 공백을 아래쪽으로 채 웁니다.엑셀 변환 쉼표 내가이 작업을 수행하기 위해 노력하고있어 다른 열
는 쉬운 방법 :(
나는 당신이 또한 도우미 컬럼의 부부와 함께 공식하여이 작업을 수행 할 수있는 의견 항에와보고 싶어 (A) 그게 사실이고 경우 (b)에 얼마나 어려운지는 것 대답은 (a) 예, 바로 그랬고 (b) 매우 (복잡한 공식에 더 숙련 된 사람들이 나와 있습니다. 그래서 도우미 열이 당신이 어떤 긴 수식이 필요한이
Column C (i) is source row
Column D (j) is string number within source row
그러나 달성하기 위해 VBA에서 내가 년대와 J의처럼
- : 여기
은 결과입니다 .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의 수식을 단순화합니다.
나는 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
감사합니다. 그동안, 나는이 데이터를 처리하기 위해 PHP 스크립트를 작성했다. 그래도 XLS 내에서 그렇게하는 것이 좋을 것입니다. XLS에서 VBA를 사용하는 방법을 알아 내야합니다. – Mark
Excel 시트에서 Alt-F11을 누른 다음 모듈을 삽입하고 코드에 붙여 넣으십시오. F5 키를 누릅니다. –
단일 셀을 분할 한 다음 결과 배열을 반복하고 각 요소에 대해 새로운 행을 만들 수 있습니다. – flohdieter
예, VBA라고합니다. 이를 수행하는 루틴을 코딩해야합니다. –
수식을 사용하여 하나 또는 두 개의 도우미 열을 사용하여 수행 할 수 있지만 VBA는 단지 몇 줄에 불과합니다. –