ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2362|回复: 13

[求助] 选样快速拆分内容?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-1-12 16:42 | 显示全部楼层 |阅读模式
把左边拆分成右边。 捕获.PNG


Book2.rar

5.99 KB, 下载次数: 10

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-12 16:54 | 显示全部楼层
逗号用word可以拆分,连续号不会拆分

TA的精华主题

TA的得分主题

发表于 2020-1-12 20:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-1-12 20:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
前面字符只有一位吗? 会出现R1-4,R7-9 这样的情况吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-12 22:40 来自手机 | 显示全部楼层
varytina 发表于 2020-1-12 20:54
前面字符只有一位吗? 会出现R1-4,R7-9 这样的情况吗?

会出现R4,RB7,R11-16,RB18-22  RA3 RA33
有时是逗号分隔,有时是空格分隔,混的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-12 22:48 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jiangxiaoyun 发表于 2020-1-12 20:34
这种用powerquery处理可以的.以目前数据

找不到powerquery在哪?2007有吗?

TA的精华主题

TA的得分主题

发表于 2020-1-12 23:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学上网 发表于 2020-1-12 22:40
会出现R4,RB7,R11-16,RB18-22  RA3 RA33
有时是逗号分隔,有时是空格分隔,混的。

这个吧用Power Query 比较简单, 讲个思路吧,Power Query 思路
1.利用逗号第一次拆分
2.利用Record功能,去除字母,得到- 前后的数字,并生成序列List,例如11-15;
                           剔除数字获取字母,组合list生成{R11,R12,R13,R14,R15}
3.展开
4.将"数量"列变为1
可以参照之前的回答 (4楼)
http://club.excelhome.net/forum.php?mod=viewthread&tid=1517131

VBA思路
1.利用[逗号]分割循环,
2.利用[-]分割循环,(开始=第一个元素的"-"前面的数字,结束=第二个元素的"-"前面的数字)
               注意:如果只有一个元素的时候,需要增加一个IF判断 开始=结束=第一个元素的数字
3.在循环中,建立一个足够大的数组逐一添加即可,(第一个元素前面的字母及第二次循环的变量),例如 R & i=11 to 15
难点在于剔除字符串(String)中的字母,或者剔除数字
可以自建正则函数
剔除掉字母[^A-Za-z],剔除掉数字[^0-9]

回答的有点啰嗦,仅供楼主参考
望大佬斧正


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-1-13 12:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-1-13 12:53 | 显示全部楼层
先上图片对付着,再上代码
  1. Sub test()
  2.     Dim ar, r, Reg, i&, s$, Rng As Range, cel As Range, br()
  3.     ar = Range("A1").CurrentRegion
  4.     r = UBound(ar)
  5.     Set Reg = CreateObject("VBScript.RegExp")
  6.     Reg.Global = True
  7.     Reg.Pattern = "([A-Za-z]+)(\d+)-(\d+)"
  8.     For i = 2 To UBound(ar)
  9.         s = Replace(Reg.Replace(WorksheetFunction.Trim(ar(i, 3)), "$1$2:$1$3"), " ", ",")
  10.         For Each Rng In Range(s).Areas
  11.             For Each cel In Rng.Cells
  12.                 n = n + 1
  13.                 ReDim Preserve br(1 To 3, 1 To n)
  14.                 br(1, n) = ar(i, 1)
  15.                 br(2, n) = 1
  16.                 br(3, n) = Replace(cel.Address, "$", "")
  17.             Next
  18.         Next
  19.     Next
  20.     Range("F2:H1048576").ClearContents
  21.     Range("F2").Resize(n, 3) = Excel.WorksheetFunction.Transpose(br)
  22. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-1-13 15:13 | 显示全部楼层
ggmmlol 发表于 2020-1-13 12:53
先上图片对付着,再上代码

如果如果前面字母是FORDESAX这样的字符串,Range的方法就失效了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 15:05 , Processed in 0.047257 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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