ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何用VBA清除列包含双引号的数据列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-4 16:48 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
下列表数据从系统导出,其中列数据是和否,直观看不到双引号,复制到记事本,会显示 “     是”        或者 “    否”,请问如何用VBA,清空前后字符串双引号。本人会用公式CLEAN()函数处理,也会用手工分列处理,但想用VBA直接清除较果比较理想。
image.png

最后这三列数据复制到记事本是这个样子
image.png

含双引号的数据1.zip

49.32 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2024-2-4 17:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
正则式搞一下

image.jpg

TA的精华主题

TA的得分主题

发表于 2024-2-4 17:36 | 显示全部楼层
Sub test()
Dim rng As Range, ss, sj
Set reg = CreateObject("vbscript.regexp")
For Each rng In Range("f2:h30")
With reg
.Global = True
.Pattern = "[一-龢]"
   Set ss = .Execute(rng)
   For Each sj In ss
   rng = sj
   Next
End With
Next
End Sub

TA的精华主题

TA的得分主题

发表于 2024-2-4 17:40 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-4 19:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
perfect131 发表于 2024-2-4 17:40
vbtab 一行代码替换即可

太历害了,大神级别。

TA的精华主题

TA的得分主题

发表于 2024-2-4 21:12 | 显示全部楼层
这是表中含有不可见字符,不仅后三列,B列也是。只要清除不可见字符即可,常规的trim函数在这里不起作用。
附件供参考。。。

含双引号的数据1.zip

49.32 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-2-4 21:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
清除不可见字符代码。
  1. Sub ykcbf()   '//2024.2.4
  2.     Sheets("数据源").Cells.Copy Sheets("结果").[a1]
  3.     Call 去除不可见字符(Sheets("结果").UsedRange)
  4. End Sub

  5. Function 去除不可见字符(rng As Range)
  6.     Dim ar, i
  7.     ar = Array(9, 10, 13, 28, 29, 30, 31, 32, 127)
  8.     For i = 0 To UBound(ar)
  9.         rng.Replace ChrW(ar(i)), ""
  10.     Next
  11.     For i = 129 To 254
  12.         rng.Replace ChrW(i), ""
  13.     Next
  14.     rng.Replace " ", ""
  15. End Function
复制代码


TA的精华主题

TA的得分主题

发表于 2024-2-5 08:47 | 显示全部楼层
本帖最后由 ykcbf1100 于 2024-2-5 08:51 编辑

练手,用正则做一个。

含双引号的数据2.7z

28.4 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-2-5 08:48 | 显示全部楼层
练手。。。
  1. Sub ykcbf()   '//2024.2.5
  2.     Set reg = CreateObject("VBScript.Regexp")
  3.     Sheets("数据源").Cells.Copy Sheets("结果").[a1]
  4.     With Sheets("结果")
  5.         Set rng = .UsedRange.Offset(1)
  6.         With reg
  7.             .Pattern = "\s+"
  8.             For Each rn In rng
  9.                 rn.Value = .Replace(rn.Value, "")
  10.             Next
  11.         End With
  12.     End With
  13. End Sub

复制代码


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

本版积分规则

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

GMT+8, 2024-7-1 13:59 , Processed in 0.036924 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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