ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助:如何把选定区域中的特定字符提取出来,并弄成{A,B,C,D}这样的字符串格式。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-3 18:26 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求助:如何把选定区域中的特定字符提取出来,并弄成{A,B,C,D}这样的字符串格式。
要求:要在C2:C20这个区域中找到含“×÷【】空格(){},”中的字符。
结果:返回字符串{×,÷,【,】}。
说明:结果用{}括起来,结果中每个字符只能有一个,不要重复,且仅字符中间用英文逗号连接。前面查找中的括号是中文括号。
微信截图_20230403182307.png

测试.rar

8.75 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-4-3 19:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请参考。。。

测试.rar

11.64 KB, 下载次数: 11

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-4 09:56 | 显示全部楼层

老师好,我其实是为了一次性简化计算式用的,想一次提取到这些集合,再计算每行计算式的时候,有针对性的替换,比如把÷替换成/,因原文本计算式是不能动的,所以不能在原文本上替换。然后有时候整个文本可能都没有一个这些字符,那计算的时候都整个替换一遍,又太浪费时间了。所以想先看一下整个文本中有哪些,再去只循环替换那些有的字符。
比如原先这样依次替换每个单元格的话,假如整个都没有一个这些字符的时候,那这些替换就是纯浪费计算速度了。
Tmp = Application.Clean(StrConv(Rng, vbNarrow))             '全角转半角,清不可见字符
Tmp = Application.Substitute(Tmp, " ", "")                  '清除计算式中的空格
Tmp = Replace(Replace(Tmp, "(", "("), ")", ")")           '中文括号转换为英文括号
Tmp = Replace(Replace(Tmp, "[", "("), "]", ")")             '中括号转换为小括号
Tmp = Replace(Replace(Tmp, "{", "("), "}", ")")             '大括号转换为小括号
Tmp = Replace(Replace(Tmp, "×", "*"), "÷", "/")           '乘号、除号转换为计算符号

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-4 10:27 | 显示全部楼层
本帖最后由 mp3_2004 于 2023-4-4 10:36 编辑

就是我的提问是针对选区,不是取具体的一个单元格,老师能帮忙再改一下不?主要是为了提速,有其他不对每个单元格循环的方法不?

TA的精华主题

TA的得分主题

发表于 2023-4-4 11:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mp3_2004 发表于 2023-4-4 10:27
就是我的提问是针对选区,不是取具体的一个单元格,老师能帮忙再改一下不?主要是为了提速,有其他不对每 ...

没理解要达什么目的,建议模拟一下结果。。。

TA的精华主题

TA的得分主题

发表于 2023-4-4 11:58 | 显示全部楼层
本帖最后由 准提部林 于 2023-4-4 12:01 编辑
mp3_2004 发表于 2023-4-4 09:56
老师好,我其实是为了一次性简化计算式用的,想一次提取到这些集合,再计算每行计算式的时候,有针对性的 ...

不檢查...怎知有哪些符號???
既然要先檢查...不如就直接替換..反正沒有的也不會錯

要嘛..海底撈, 不然一網打盡

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-4 12:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 mp3_2004 于 2023-4-4 12:21 编辑
gwjkkkkk 发表于 2023-4-4 11:45
没理解要达什么目的,建议模拟一下结果。。。

老师,结果就是只需要一个结果就行了。就是在选区中找到{待查找字符}有哪些字符的一个集合{区域中有的字符(不重复),字符间用英文逗号连接}。如果区域中找不到,就返回一个结果""

TA的精华主题

TA的得分主题

发表于 2023-4-4 12:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mp3_2004 发表于 2023-4-4 12:10
老师,结果就是只需要一个结果就行了。就是在选区中找到{待查找字符}有哪些字符的一个集合{区域中有的字 ...

这样???

测试.rar

11.19 KB, 下载次数: 8

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-4 14:47 | 显示全部楼层

是的                                   

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-4 15:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
准提部林 发表于 2023-4-4 11:58
不檢查...怎知有哪些符號???
既然要先檢查...不如就直接替換..反正沒有的也不會錯

有没有find或者search等的方法呢,先把需要替换的范围缩小一点,假如要替换的有很多行,如果先能缩小这个替换字符的范围,是不是可以让整个程序的运行提点速啊,我现在就是傻傻的,管它有没有都替换这么弄的,但是有点卡,一般至少有几百行整个计算完就要二十来秒了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 08:14 , Processed in 0.053431 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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