2016-09-06 1 views
0

필자는 특정 지리적 매개 변수가있는 행이있는 Excel 시트가 있습니다. 파일과 다음 파일 사이에있는 모든 행을 인접한 열에 조인하고 싶습니다. 원본 시트는 Image - 1에있는 시트와 같습니다. Image - 2에있는 것과 같은 것으로 전 환되어 있습니다.특정 값으로 시작하는 두 셀 사이의 열에 행을 변환하는 방법은 무엇입니까?

1 행 - 1 열에 대해이 코드 http://www.mrexcel.com/forum/excel-questions/79645-copying-alternate-rows-data-into-column.html을 사용했으며 작동합니다. 아주. 그러나 여러 행을 위해 그것을하는 방법을 모른다 - 열이 구글 시트에서 작동

enter image description here

답변

1

가 여기에 VBA 솔루션

Sub TransposeData() 

    Const FirstRow As Long = 1 
    Const WorkSheetName As String = "Sheet4" 
    Dim arData, v 
    Dim List As Object 
    Set List = CreateObject("System.Collections.ArrayList") 
    Dim NextRow As Long, x As Long 

    With Worksheets(WorkSheetName) 
     arData = .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Value 
     NextRow = WorksheetFunction.CountA(.Range("B:B")) + 1 

     For Each v In arData 
      If InStr(v, "File:") And List.Count > 0 Then 

       .Cells(NextRow, "B").Resize(1, List.Count) = List.ToArray 
       List.Clear 
       NextRow = NextRow + 1 

      End If 
      List.Add v 
     Next 
     If List.Count > 0 Then .Cells(NextRow, "B").Resize(1, List.Count) = List.ToArray 
    End With 

End Sub 
+0

첫 번째 열만이 전치됩니다. 그것도 행의 위치가 순서 대신 바뀌어 – saravanaganesh18

+0

모든 데이터가 첫 번째 열에 있습니까? –

+0

감사합니다. 이제 주문은 괜찮습니다. 그러나 행 뒤의 행 대신에 전체 열이 단일 행으로 바뀝니다 – saravanaganesh18

0

트랜스. 샘플로 3 레코드가 있었으므로 각 레코드에는 4 가지 항목이있어서 A1에서 A12까지의 데이터가 3 레코드를 나타냅니다. 예를 들어 0부터 임의의 숫자까지 갖는 B 열을 작성하려고합니다.

이어서 전지 C1에서는 = INDEX ($ A $ 1 : $ A $ 12 $의 B1의 * 4 + 1,1) 같은 것을 가질 수

셀 D1에서는 = INDEX 같은 것을 가질 수있다

및 셀 E1에 = INDEX ($ A $ 1 : $ A $ 12, $ B1 * 4 + 3)와 같은 값을 가질 수 있습니다 ($ A $ 1 : $ A $ 12, $ B1 * 4 + 1)

세포 F1에서 당신이 = INDEX 같은 것을 할 수 있습니다 (1 $ A $ : $ A $ 12 $ 지하 1 층 * 4 + 4,1)

그래서 첫 번째 행을 마쳤으므로 나머지 행을 채우기 위해 클릭 한 다음 드래그하여 $ B1에 1 달러 기호가 없으므로 $ B2와 $ B3의 다음 행을 자동으로 읽습니다. 올바른 데이터를 얻었습니다.

+0

바꿀 경우에게 인'+ n''+ ROW()와'하나 개의 공식은 네 곳에서 봉사 할 것입니다. – pnuts

+0

# REF # 오류가 발생했습니다. 12 행의 간단한 3 개의 레코드로 시도해 보았습니다. 하지만 여전히 동일합니다 – saravanaganesh18

관련 문제