ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: shaowu459

[分享] 表格合并和拆分(公式及详解)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-29 11:15 | 显示全部楼层
本帖已被收录到知识树中,索引项:GET.WORKBOOK
最近研究多表合并。看了很多方法,vba除外,感觉都过于复杂。思考出新方法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-29 12:50 | 显示全部楼层
lgcmeli 发表于 2014-9-29 11:15
最近研究多表合并。看了很多方法,vba除外,感觉都过于复杂。思考出新方法。

除了vba,没有太好办法。因为都要求自动扩展,自动识别工作表名称,方便合并和拆分。
我这个例子如果只弄合并或者拆分都会简单一点,但是速度不快,并且初学者学习起来稍微难一点。

就目前来说,有几个问题:
1)用公式得到全部工作表名称,得用函数
2)合并的话得识别每个行数,也得用涉及多表的函数
3)逐个列出结果,需要用数组公式,慢
4)如果再设置自动拆分,就需要提取工作表名称,并嵌套在公式中,长

所以大量数据还是vba,这些方法就是这个学习而已。

TA的精华主题

TA的得分主题

发表于 2014-9-29 13:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1,得到工作表名称,肯定是宏表函数了,几十个上百个表还是速度可以的。而且一旦工作表数量暂时固定,也没必要老刷新宏表函数。

2,合并的每个表函数,容易得到indirect加counta。最好辅助列,不要在名称里一步到位。

3,根据每个表的行数重复表名,一般用lookup。不用数组公式,至于countif都不推荐使用,慢。

4,自动拆分,如果表名一定情况下固定,也是没什么速度很快。可以预先设想好那些被拆分出的表名,然后找一般都是辅助列加vlookup什么的。

所有情况下,都避免使用复杂数组公式,复杂速度不可能提高。

TA的精华主题

TA的得分主题

发表于 2014-9-29 14:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-29 15:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lgcmeli 发表于 2014-9-29 13:11
1,得到工作表名称,肯定是宏表函数了,几十个上百个表还是速度可以的。而且一旦工作表数量暂时固定,也没必 ...

没错。如果可以考虑部分手动操作和辅助列就可以快很多。
比如我做的拆分公式,就是属于自动型的。鼠标拖动复制一个工作表,将工作表名称改成要拆分的内容就可以自动用数组公式生成。缺点就是慢,如果用辅助列或者单独生成工作表后用公式就可以快很多了。

点评

是的。建议使用辅助列。不要那么完完全全的自动。不过辅助列的使用也是自动的,不是不自动的。  发表于 2014-9-29 16:17

TA的精华主题

TA的得分主题

发表于 2014-12-26 13:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
版主,还在没?
看到你发的帖子,正是我苦苦寻找的方法呀
但是我是菜鸟,研究了半天都没有看明白该怎么弄,能够帮我设置一下吗?或者给我说说1.2.3一部步该怎么做呢。跪求跪求

前面几个表格的格式都是一样的,汇总表格和长期活动表格格式一样,和其他表格的区分就是后面多了几列

拜托

活动跟进新表格.rar

7.54 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-28 17:03 | 显示全部楼层
67598985 发表于 2014-12-26 13:56
版主,还在没?
看到你发的帖子,正是我苦苦寻找的方法呀
但是我是菜鸟,研究了半天都没有看明白该怎么弄 ...

兄弟,这个用公式很慢啊。还是找vba方面的来帮忙吧。

TA的精华主题

TA的得分主题

发表于 2014-12-28 19:49 | 显示全部楼层
还是用VBA比较好

Sub 合并数据()

Dim wk As Workbook, wsh As Worksheet, i As Long, brr()

a = Dir("C:\Users\Administrator\Desktop\新建文件夹 (3)\*.xlsm")
Workbooks.Open ("C:\Users\Administrator\Desktop\新建文件夹 (3)\" & a)
Do
a = Dir
If a <> "" Then
Workbooks.Open ("C:\Users\Administrator\Desktop\新建文件夹 (3)\" & a)
Else
Exit Do
End If
Loop

For Each wk In Workbooks
    a = wk.Name
    If wk.Name <> "汇总.xlsm" Then
    wk.Activate
    For Each wsh In Worksheets
        arr = wsh.Range("a2:e" & wsh.Range("e65536").End(xlUp).Row)
        k = k + UBound(arr)
        ReDim Preserve brr(1 To 6, 1 To k)
        For i = 1 To UBound(arr)
            n = n + 1
            brr(1, n) = arr(i, 1)
            brr(2, n) = arr(i, 2)
            brr(3, n) = arr(i, 3)
            brr(4, n) = arr(i, 4)
            brr(5, n) = arr(i, 5)
            brr(6, n) = wk.Name
            Next i
          Next
          End If
        Next
Sheet1.Range("a2").Resize(n, 6) = Application.Transpose(brr)

Sheet1.Range("f2:f" & Sheet1.Range("f65536").End(xlUp).Row).Replace What:=".xlsm", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

For Each wk In Workbooks
    If wk.Name <> "汇总.xlsm" Then
    wk.Activate
    wk.Close True
    End If
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2014-12-29 17:13 | 显示全部楼层
xutianlin 发表于 2014-12-28 19:49
还是用VBA比较好

Sub 合并数据()

亲,可以帮我设置一下不?我是菜鸟啊,我做不来,摸不着头脑,元旦就要启用新表了,现在学也来不及了,多谢多谢

TA的精华主题

TA的得分主题

发表于 2014-12-29 17:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
67598985 发表于 2014-12-29 17:13
亲,可以帮我设置一下不?我是菜鸟啊,我做不来,摸不着头脑,元旦就要启用新表了,现在学也来不及了,多 ...

你发个帖子,上传附件我看看再说。。。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-5 03:10 , Processed in 0.049778 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表