Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2917|回复: 11

[已解决]VBA用数组 把B列省份或地区拆分成多个工作表

[复制链接]
发表于 2017-7-3 11:53 | 显示全部楼层 |阅读模式
本帖最后由 laoau138 于 2017-7-3 21:19 编辑

VBA用数组   把B列省份或地区拆分成多个工作表
最佳答案
2017-7-3 16:59
本帖最后由 chart888 于 2017-7-3 17:01 编辑
  1. Sub test()
  2. Dim Sh As Worksheet
  3. Dim i&, x&, r&, d
  4. Set d = CreateObject("Scripting.Dictionary")
  5. For Each Sh In ThisWorkbook.Worksheets
  6.     d(Sh.Name) = ""
  7. Next
  8. arr = [A1].CurrentRegion
  9.     For i = 2 To UBound(arr)
  10.         x = Left(arr(i, 2), 2)
  11.         For Each Sh In Worksheets
  12.             If Not d.exists(x) Then
  13.                 ThisWorkbook.Worksheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  14.                 ActiveSheet.Name = x
  15.                 d(x) = ""
  16.                 r = Cells(1, 1).CurrentRegion.Rows.Count + 1
  17.                 Cells(r, 1) = arr(i, 1): Cells(r, 2) = arr(i, 2)
  18.             Else
  19.                 Worksheets(x).Activate
  20.                 r = Cells(1, 1).CurrentRegion.Rows.Count + 1
  21.                 Cells(r, 1) = arr(i, 1): Cells(r, 2) = arr(i, 2)
  22.             End If
  23.         Next
  24.     Next
  25. End Sub
复制代码

VBA用数组 把B列省份或地区拆分成多个工作表.rar

17.24 KB, 下载次数: 9

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-3 14:17 | 显示全部楼层
你又出现了,以为你不会出现呢
新疆吐 西藏措 这是啥意思?
你默认取前三个文字?

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-7-3 15:46 | 显示全部楼层
本帖最后由 laoau138 于 2017-7-3 15:49 编辑
chart888 发表于 2017-7-3 14:17
你又出现了,以为你不会出现呢
新疆吐 西藏措 这是啥意思?
你默认取前三个文字?

不懂就出现了

按默认前三个字
回复

使用道具 举报

发表于 2017-7-3 16:12 | 显示全部楼层
数据太少了,不好写代码!
回复

使用道具 举报

发表于 2017-7-3 16:19 | 显示全部楼层
laoau138 发表于 2017-7-3 15:46
不懂就出现了

按默认前三个字

这个你不会?
你确定???
以我对你别的代码的了解
这个你绝对可以搞定
回复

使用道具 举报

发表于 2017-7-3 16:25 | 显示全部楼层
chart888 发表于 2017-7-3 14:17
你又出现了,以为你不会出现呢
新疆吐 西藏措 这是啥意思?
你默认取前三个文字?

其实就取前两个字做省份就行了,没必要取三个字
回复

使用道具 举报

发表于 2017-7-3 16:59 | 显示全部楼层    本楼为最佳答案   
本帖最后由 chart888 于 2017-7-3 17:01 编辑
  1. Sub test()
  2. Dim Sh As Worksheet
  3. Dim i&, x&, r&, d
  4. Set d = CreateObject("Scripting.Dictionary")
  5. For Each Sh In ThisWorkbook.Worksheets
  6.     d(Sh.Name) = ""
  7. Next
  8. arr = [A1].CurrentRegion
  9.     For i = 2 To UBound(arr)
  10.         x = Left(arr(i, 2), 2)
  11.         For Each Sh In Worksheets
  12.             If Not d.exists(x) Then
  13.                 ThisWorkbook.Worksheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  14.                 ActiveSheet.Name = x
  15.                 d(x) = ""
  16.                 r = Cells(1, 1).CurrentRegion.Rows.Count + 1
  17.                 Cells(r, 1) = arr(i, 1): Cells(r, 2) = arr(i, 2)
  18.             Else
  19.                 Worksheets(x).Activate
  20.                 r = Cells(1, 1).CurrentRegion.Rows.Count + 1
  21.                 Cells(r, 1) = arr(i, 1): Cells(r, 2) = arr(i, 2)
  22.             End If
  23.         Next
  24.     Next
  25. End Sub
复制代码

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

发表于 2017-7-3 21:09 | 显示全部楼层
我把楼上的代码修改了一下,如下:

附件: 按省份拆分成多个工作表.rar (16.54 KB, 下载次数: 4)

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-7-3 21:20 | 显示全部楼层
chart888 发表于 2017-7-3 16:19
这个你不会?
你确定???
以我对你别的代码的了解

你确定什么了
回复

使用道具 举报

发表于 2017-7-4 12:25 | 显示全部楼层

他是要你确定!哈哈!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 21:29 , Processed in 0.453809 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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