VBA常用小代码:一键将总表数据拆分为多个(实用转载)https://t.cn/A6VMGnfe

Sub NewShts()

Dim d As Object, sht As Worksheet, arr, brr, r, kr, i&, j&, k&, x&

Dim Rng As Range, Rg As Range, tRow&, tCol&, aCol&, pd&

Application.ScreenUpdating = False '关闭屏幕更新

Application.DisplayAlerts = False '关闭警告信息提示

Set d = CreateObject("scripting.dictionary") 'set字典

Set Rg = Application.InputBox("请框选拆分依据列!只能选择单列单元格区域!", Title:="提示", Type:=8)

'用户选择的拆分依据列

tCol = Rg.Column '取拆分依据列列标

tRow = Val(Application.InputBox("请输入总表标题行的行数?"))

'用户设置总表的标题行数

If tRow = 0 Then MsgBox "你未输入标题行行数,程序退出。": Exit Sub

Set Rng = ActiveSheet.UsedRange '总表的数据区域

arr = Rng '数据范围装入数组arr

tCol = tCol - Rng.Column + 1 '计算依据列在数组中的位置

aCol = UBound(arr, 2) '数据源的列数

For i = tRow + 1 To UBound(arr) '遍历数组arr

If Not d.exists(arr(i, tCol)) Then

d(arr(i, tCol)) = i '字典中不存在关键词则将行号装入字典

Else

d(arr(i, tCol)) = d(arr(i, tCol)) & "," & i '如果存在则合并行号,以逗号间隔

End If

Next

For Each sht In Worksheets '遍历一遍工作表,如果字典中存在则删除

If d.exists(sht.Name) Then sht.Delete

Next

kr = d.keys '字典的key集

For i = 0 To UBound(kr) '遍历字典key值

If kr(i) <> "" Then '如果key不为空

r = Split(d(kr(i)), ",") '取出item里储存的行号

ReDim brr(1 To UBound(r) + 1, 1 To aCol) '声明放置结果的数组brr

k = 0

For x = 0 To UBound(r)

k = k + 1 '累加记录行数

For j = 1 To aCol '循环读取列

brr(k, j) = arr(r(x), j)

Next

Next

With Worksheets.Add(, Sheets(Sheets.Count))

'新建一个工作表,位置在所有已存在sheet的后面

.Name = kr(i) '表格命名

.[a1].Resize(tRow, aCol) = arr '放标题行

.[a1].Offset(tRow, 0).Resize(k, aCol) = brr '放置数据区域

Rng.Copy '复制粘贴总表的格式

.[a1].PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

.[a1].Select

End With

End If

Next

Sheets(1).Activate '激活第一个表格

Set d = Nothing '释放字典

Erase arr: Erase brr '释放数组

MsgBox "数据拆分完成!"

Application.ScreenUpdating = True '恢复屏幕更新

Application.DisplayAlerts = True '恢复警示
End Sub

Yarısını kəsdim və Fu Zhi başımı mənəvi olaraq qaldıran kimi, doktor Gu beş metr aralıda, hələ də nazik çiyinlərlə pişik kimi səssizcə gəzərək mənə tərəf addımladı. Biləyimdən tutdum və tez bir zamanda əlimdəki işi bitirmək istədim, amma tələsik dəri qırıldı ... Tanrı bilir ki, o vaxt hansı ləng ifadələr vermişdim. Qarşımdan keçib durdu, gözləri yerdəki qa

阿勒坦湖第2碑(第29号)
: : :
är ärdam üčün tüpüt qanqa : yalabaš bardim : kälmädim
ང་རང་བོད་ཀྱི་ཧན(བཙན་པོ)ལ་ཕོ་ཉར་བསྐྱོད་ཅིང་ཕྱིར་མ་ལོག །
我作为出使吐蕃汗的使者而出发,我未能从那里返回。 https://t.cn/R2WxDIZ


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 这是电子体育发展历程中重要的“里程碑”之一,也代表电子竞技正在逐渐走入大众视野[打call]#英雄联盟#早呀宝贝们[给你小心心]2018年雅加达亚运会上,腾讯电
  • #暖心脱单[超话]#【媒人牵线】❤我承诺以结婚为目的真诚交友编号:G2381✪姓名:  文2✪性别:男3✪出生日期:1987 9 264✪民族:汉族5✪毕业院校
  • 这就是人生,它总会在不经意间告诉你,你的人生该是谁的贵人,谁是你的贵人。这就是人生,它总会在不经意间告诉你,你的人生该是谁的贵人?
  • 如今,人空瘦,海棠落琼眸34、原文:我想你古文:所谓伊人,在水一方35、原文:我超级想你古风文:山河远阔,人间星河,无一是你,无一不是你36、原文:我非常爱你古
  • 近期的消息面多空利好铺面而来,让人对整体市场多空选择也是琢磨不透,我们这个时候也是要把握住本心,不要对于一时涨跌破坏了整体心态。  行情分析  BTC昨日经过一
  • ——辽宁大连5月15日,大连市卫健委副主任赵连在当地政府举行的疫情防控新闻发布会上表示,截至5月14日24时,确定安徽新冠确诊病例李某某的密接者178人,其中本
  • 希望进来的小伙伴是友好可以和其他成员和谐相处的,不要口嗨爱装逼的,我和会长都很好讲话,有啥事提前讲,不要随便自己退协会。#第五人格[超话]# 前百协会收人i
  • 失踪人口回归555好久没画泰妆了 果真一到夏天就会很按捺不住 真的太适合亚洲女孩画了眼影:holika 04腮红:suqqu腮红盘101唇釉:也是holika的
  • 科比,终于吃到了厚切炒酸奶,我觉得没有炒酸奶好吃,可能是我没选对店吧,这家种类少还不怎么好吃。自助翻台都比较慢的。
  • 去二村拍了今年“最后一朵”蔷薇花;好久没路过锁金村到林化所的那条道儿了,去苏果买根巧乐兹顺便溜达溜达;本科的时候喜欢出门瞎晃悠,这座城市很多地方都去过了,读研这
  • 蒙牛社交零售核心销售公司贝露可要么Show奶茶操盘手东阿新品燕窝项目发起人没有强大资源人脉的我,一直在公域流量中前进,源源不断的“流量”进线,爆粉down机✌️
  • 」Q :最可爱的成员第一名 净汉(3票):说到可爱的人就是净汉啊!我自己也觉得我的一切都很可爱❤…不好意思(笑)Q: 最有魅力的成员并列第二名胜宽(2票):不不
  • 我又看了看原文,用的是blabbermouth,如果是我的话翻译这句我压根就不会用“滔滔不绝”这个词了,要问我为什么,可能只是单纯觉得不够口语化、不够好吧。硬要
  • 袜口的设计太喜欢了,精致又低调▫️包:思加图(黑色腋下包整一个没毛病,实用又好搭。显瘦▫️鞋:思加图(带点酷感的黑色松糕鞋,魔术贴的设计超方便。
  • 6.教养这个东西看似虚无缥缈,实则触及灵魂7.人间忽晚,山河已秋8.温柔也是好多委屈换来的9.山茶花的红终究抵不过大海深处的群青10.崩溃都是悄无声息11.过树
  • 又过了一阵子,荷花仙子回到了荷塘里,村里人也不知道她去哪了。话说,这男子名叫含羞,自幼长在贫困之家,还不到10岁,父母就都去世了,只剩下他一人,住在一个用树枝和
  • #美好家居打造法[超话]##饰‬‪‬​⁢品⁠​‎‎收‎⁡‍‭‍‪⁢纳# 来自留存道沈阳分院 利⁢‍‭‭用‬ 好​‭⁡‍⁠家⁠⁠​‎里⁠​‬‪‬‪的‬⁡‍⁡每
  • #微博[超话]# ࿐གངས་དཀར་ཇོ་བོ་དབུ་ཡག། 卓奥友峄འཛམ་གླིང་གི་རི་མཐོ་ཤོས་ཀྱི་གྲལ་ལས་ཨང་དྲུག་པ་
  • 此款新疆和田玉籽料红沁【传承牌】,工艺灵魂出自老子《道德经》:致虚极,守静笃;大方无隅,大器晚成,大音希声,大象无形。经典古籍传承至今,归根于精神的力量。
  • 就算其他人都觉得他有罪他不该再出现,我也不会在意了,总有一天会证明,我才是对的,他是无辜的,爱他更是没有错。我不知道用什么去填补从5.5到今天的遗憾,只有再次见