楼主: niceaihua
2164 2

[统计软件] 请问大神怎么把Excel里的几列数据排成一列,并且首尾相接呢? [推广有奖]

已卖:939份资源

学术权威

30%

还不是VIP/贵宾

-

威望
1
论坛币
85862 个
通用积分
99.7141
学术水平
105 点
热心指数
103 点
信用等级
65 点
经验
42825 点
帖子
3909
精华
0
在线时间
7919 小时
注册时间
2011-11-9
最后登录
2026-1-1

楼主
niceaihua 在职认证  发表于 2019-4-7 12:45:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求大神解答,非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:EXCEL xcel exce cel 非常感谢

沙发
lxl2603 发表于 2019-4-8 15:12:14
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
已有 1 人评分论坛币 收起 理由
iRolly + 30 热心帮助其他会员

总评分: 论坛币 + 30   查看全部评分

藤椅
niceaihua 在职认证  发表于 2019-4-8 16:38:35
lxl2603 发表于 2019-4-7 12:45
Step1   新建并打开空白工作簿,然后另存为“列首尾相接.xlsm”(即Excel启用宏的工作簿);
Step2   打开 ...
太详细了啊 ,我试试看看啊

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-2 06:55