Step1   新建并打开空白工作簿,然后另存为“列首尾相接.xlsm”(即Excel启用宏的工作簿);
Step2   打开VBA编辑器,粘贴以下代码,运行即可。
Sub 多列首尾相接()
    
    Dim rngRanges As Range                      '需处理的多列数据区域
    Dim intColsCount As Integer                 '选中区域的总列数
    Dim intRowsCount As Integer                 '选中区域的总行数
    Dim i As Integer                            '循环变量
    Dim strSourceFileName As String             '原始数据工作簿名称(含路径)
    Dim strSourceWbName As String               '原始数据工作簿名字(仅名字,不含路径)
    Dim strSheetName As String                  '原始数据工作表名字
    Dim strMsg As String                        '提示信息
    
    strSourceFileName = Application.GetOpenFilename("Excel工作薄 (*.xls*),*.xls*")
    If strSourceFileName = "False" Then
        MsgBox "没有选择文件!请重新运行本程序并选择一个被处理文件!", vbInformation, "取消"
        Exit Sub
    Else
        Workbooks.Open Filename:=strSourceFileName
        strSourceWbName = ActiveWorkbook.Name   '获取原始数据工作簿的名字(仅名字,不含路径)
        Set rngRanges = Application.InputBox(prompt:="请选择要处理的数据区域:", Type:=8)
        strSheetName = ActiveSheet.Name         '获取原始数据工作表的名字
        intColsCount = rngRanges.Columns.Count
        intRowsCount = rngRanges.Rows.Count
        strMsg = rngRanges.Address
        
        For i = 1 To intColsCount
            Workbooks(strSourceWbName).Worksheets(strSheetName).Activate
            rngRanges.Columns(i).Copy
            Workbooks("列首尾相接.xlsm").Worksheets("sheet1").Activate
            Worksheets("sheet1").Cells(1, 2).Select
            Worksheets("sheet1").Cells(1 + intRowsCount * (i - 1), 1).Value = "原第 " & i & " 列"
            ActiveCell.Offset(intRowsCount * (i - 1), 0).PasteSpecial
        Next i
        Worksheets("sheet1").Range("f1").Value = "原始数据区域范围是 " & strMsg
    End If
    
End Sub