我有一个excel文件 Original File
我想将填充信息的所有单元格转换为单个列。喜欢 To transform This 我该怎么做? 我在互联网上搜索了我发现只是将单行中的单元格转换为单个单元格。但我无法找到这样的东西。你能帮帮我吗
答案 0 :(得分:0)
这是我为这种工作保留的一些代码。它假定每行中的值是连续的,即数据集内没有空白单元格。它还假设您在触发它时包含数据的工作表上,并且您希望将数据放在新工作表上。
Option Explicit
Sub Columnise()
Dim shtSource As Worksheet
Dim shtTarget As Worksheet
Dim rngRow As Range, rngCol As Range
Dim lCount As Long
Set shtSource = ActiveSheet 'Or specify a sheet using Sheets(<name>)
Set rngCol = Range("A1", Range("A" & Rows.Count).End(xlUp))
Set shtTarget = Sheets.Add 'Or specify a sheet using Sheets(<name>)
'Define starting row for the data
lCount = 1
'Loop through each row
For Each rngRow In rngCol
'On each row, loop through all cells until a blank is encountered
Do While rngRow.Value <> ""
'Copy the value to the target
shtTarget.Range("A" & lCount).Value = rngRow.Value
'Move one space to the right
Set rngRow = rngRow.Offset(0, 1)
'Increment counter
lCount = lCount + 1
Loop
Next rngRow
End Sub
您应该在新工作表的单个列中获得所有数据。
编辑添加:由于您提到您的数据确实包含空白单元格,因此它变得更加复杂。我们想要添加一种方法来继续数据的实际结束,而不是仅仅循环直到我们达到空白单元格。我们将Do While ...条件修改为:
Do While rngCell.Column <= Cells(rngCell.Row, Columns.Count).End(xlToLeft).Column
这将循环直到行中数据的结尾,然后继续。试一试,让我们知道。