如何将行转置为以特定值开头的两个单元格之间的列?
How to transpose rows into columns between two cells which starts with certain value?
我有一个 excel sheet,其中包含具有特定地理参数的行。我想将 File 和下一个 File 之间的所有行转置到相邻的列中。原来的 sheet 就像图片 - 1 中的那个。我想把它转置成图片 - 2 中的那个。
对于一行 - 一列,我使用了这段代码 http://www.mrexcel.com/forum/excel-questions/79645-copying-alternate-rows-data-into-column.html 并且效果很好。但不知道如何对多行进行 - 列转置
这适用于 Google 表格。
作为示例,我有 3 条记录,每条记录有 4 个项目,所以我有从 A1 到 A12 的数据代表我的 3 条记录。
您想要创建一个列,例如 B,其中的数字从 0 到任意。
然后在单元格 C1 中你可以有类似
=INDEX($A$1:$A$12,$B1*4+1,1)
在单元格 D1 中你可以有类似的东西
=INDEX($A$1:$A$12,$B1*4+2,1)
在单元格 E1 中你可以有类似的东西
=INDEX($A$1:$A$12,$B1*4+3,1)
在单元格 F1 中你可以有类似的东西
=INDEX($A$1:$A$12,$B1*4+4,1)
所以我完成了第一行,然后我只需单击并拖动以填充其余行,因为 $B1 1 没有美元符号,它会自动从 $ 读取下一行B2 和 $B3 并抓取了正确的数据。
这是一个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
我有一个 excel sheet,其中包含具有特定地理参数的行。我想将 File 和下一个 File 之间的所有行转置到相邻的列中。原来的 sheet 就像图片 - 1 中的那个。我想把它转置成图片 - 2 中的那个。
对于一行 - 一列,我使用了这段代码 http://www.mrexcel.com/forum/excel-questions/79645-copying-alternate-rows-data-into-column.html 并且效果很好。但不知道如何对多行进行 - 列转置
这适用于 Google 表格。 作为示例,我有 3 条记录,每条记录有 4 个项目,所以我有从 A1 到 A12 的数据代表我的 3 条记录。 您想要创建一个列,例如 B,其中的数字从 0 到任意。
然后在单元格 C1 中你可以有类似 =INDEX($A$1:$A$12,$B1*4+1,1)
在单元格 D1 中你可以有类似的东西 =INDEX($A$1:$A$12,$B1*4+2,1)
在单元格 E1 中你可以有类似的东西 =INDEX($A$1:$A$12,$B1*4+3,1)
在单元格 F1 中你可以有类似的东西 =INDEX($A$1:$A$12,$B1*4+4,1)
所以我完成了第一行,然后我只需单击并拖动以填充其余行,因为 $B1 1 没有美元符号,它会自动从 $ 读取下一行B2 和 $B3 并抓取了正确的数据。
这是一个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