将所有单元格移动到Excel中的新单列中

时间:2016-10-06 13:33:06

标签: excel excel-formula

我有一个excel文件 Original File

我想将填充信息的所有单元格转换为单个列。喜欢 To transform This 我该怎么做? 我在互联网上搜索了我发现只是将单行中的单元格转换为单个单元格。但我无法找到这样的东西。你能帮帮我吗

1 个答案:

答案 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

这将循环直到行中数据的结尾,然后继续。试一试,让我们知道。