如何将多个Excel列中的数据合并为一列

Lea*_*ing 13 excel vba

假设我有一个excel表,每列有4列数据和20,000行数据.

获得它的最有效方法是什么,以便将所有数据合并到一列中(IE-A列80,000行数据,而不是跨4列分布的20,000行数据).

此外,如何实现该解决方案.我的意思是,如果您的解决方案不是"公式"而是VBA,我该如何实施该解决方案?

谢谢!

Dic*_*ika 17

保存您的工作簿.如果此代码不能满足您的要求,那么返回的唯一方法是关闭而不保存并重新打开.

在一列中选择要列出的数据.必须是连续的列.可能包含空白单元格.

按Alt + F11打开VBE

按Control + R查看Project Explorer

导航到工作簿的项目,然后选择"插入 - 模块"

将此代码粘贴到代码窗格中

Sub MakeOneColumn()

    Dim vaCells As Variant
    Dim vOutput() As Variant
    Dim i As Long, j As Long
    Dim lRow As Long

    If TypeName(Selection) = "Range" Then
        If Selection.Count > 1 Then
            If Selection.Count <= Selection.Parent.Rows.Count Then
                vaCells = Selection.Value

                ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1)

                For j = LBound(vaCells, 2) To UBound(vaCells, 2)
                    For i = LBound(vaCells, 1) To UBound(vaCells, 1)
                        If Len(vaCells(i, j)) > 0 Then
                            lRow = lRow + 1
                            vOutput(lRow, 1) = vaCells(i, j)
                        End If
                    Next i
                Next j

                Selection.ClearContents
                Selection.Cells(1).Resize(lRow).Value = vOutput
            End If
        End If
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

按F5运行代码


小智 10

最佳和简单的解决方案:

选择要复制到单列的列范围

复制单元格范围(多列)

打开Notepad ++

粘贴选定的单元格范围

按Ctrl + H,将\ t替换为\n,然后单击全部替换

所有多列都属于一列

现在复制相同并粘贴在excel中

对于那些不想在VBA中浪费时间编码的人来说,这是一个简单而有效的解决方案


Ken*_* LJ 5

以下是使用一些简单的Excel公式进行操作的方法,而不需要花哨的VBA.诀窍是使用OFFSET公式.请参阅此示例电子表格:

https://docs.google.com/spreadsheet/ccc?key=0AuSyDFZlcRtHdGJOSnFwREotRzFfM28tWElpZ1FaR2c&usp=sharing#gid=0