ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 用文心一言在EXCEL实现WPS清空前后空字符串VBA代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-27 16:53 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
跟论坛的文章是一类问题,可以在这下载练手文件https://www.excelhome.net/3422.html

平常比较习惯用EXCEL,但是又眼馋WPS的某些功能,心念一动 想着用用AIGC试试。试了下40w条数据,用2.2秒处理完了。但是赶紧WPS更胜一筹。

代码:
  1. Private regex As Object ' 静态的正则表达式对象
  2.   
  3. Private Sub InitializeRegex() ' 初始化正则表达式对象
  4.     If regex Is Nothing Then
  5.         Set regex = CreateObject("VBScript.RegExp")
  6.         regex.Global = True
  7.     End If
  8. End Sub
  9.   
  10. Function CleanStringWithRegex(ByVal inputString As String) As String
  11.     InitializeRegex ' 确保 regex 已创建
  12.     regex.Pattern = "\s+|^ | $" ' 合并两个替换操作的正则表达式
  13.     CleanStringWithRegex = regex.Replace(inputString, "")
  14. End Function
  15.   
  16. ' ... 其他代码保持不变,但在调用 CleanStringWithRegex 之前确保 InitializeRegex 已被调用 ...


  17. Sub CleanAndFormatAsText_RegexArray()
  18.     Dim rng As Range
  19.     Dim cellValues() As Variant
  20.     Dim outputValues() As Variant
  21.     Dim i As Long, j As Long, rowCount As Long, colCount As Long
  22.     Dim startTime As Double
  23.       
  24.     startTime = Timer
  25.       
  26.     ' 确保用户已经选定了要处理的单元格范围
  27.     If TypeName(Selection) <> "Range" Then
  28.         MsgBox "请先选择一个单元格范围。", vbExclamation, "未选择范围"
  29.         Exit Sub
  30.     End If
  31.       
  32.     ' 将选定范围赋值给rng变量,并获取其尺寸
  33.     Set rng = Selection
  34.     rowCount = rng.Rows.Count
  35.     colCount = rng.Columns.Count
  36.       
  37.     ' 读取数据到数组中
  38.     cellValues = rng.Value2
  39.     rng.NumberFormat = "@"
  40.       
  41.     ' 为输出值创建同样大小的数组
  42.     ReDim outputValues(1 To rowCount, 1 To colCount)
  43.       
  44.     ' 关闭屏幕更新和计算,以提高性能
  45.     Application.ScreenUpdating = False
  46.     Application.Calculation = xlCalculationManual
  47.       
  48.     ' 在数组中处理数据
  49.     For i = 1 To rowCount
  50.         For j = 1 To colCount
  51.             If Not IsEmpty(cellValues(i, j)) Then
  52.                 outputValues(i, j) = CleanStringWithRegex(CStr(cellValues(i, j)))
  53.             Else
  54.                 outputValues(i, j) = ""
  55.             End If
  56.         Next j
  57.     Next i
  58.       
  59.     ' 将处理后的数据写回Excel
  60.     rng.Value2 = outputValues
  61.       
  62.     ' 设置单元格格式为文本
  63.     'rng.NumberFormat = "@"
  64.       
  65.     ' 恢复屏幕更新和计算
  66.     Application.ScreenUpdating = True
  67.     Application.Calculation = xlCalculationAutomatic
  68.       
  69.     ' 显示处理完成消息和所用时间
  70.     MsgBox "选定范围内的异常字符已被清理,操作完成。" & vbCrLf & _
  71.            "所用时间: " & FormatNumber(Timer - startTime, 2) & " 秒", vbInformation, "处理完成"
  72. End Sub

复制代码
与文心一言的对话过程
----------------------------------------------------------------------------------------------------------------------
文言_001.png
文言_002.png
文言_003.png
文言_004.png
文言_005.png
文言_006.png
文言_007.png
文言_008.png
文言_009.png
文言_010.png
文言_011.png
文言_012.png
文言_013.png
文言_014.png
文言_015.png
文言_016.png
文言_017.png
文言_018.png
文言_019.png
文言_020.png
文言_021.png
文言_022.png
文言_023.png
文言_024.png
文言_025.png
文言_026.png
文言_027.png
文言_028.png
文言_029.png
文言_030.png


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-28 08:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
非常厉害!谢谢分享!学习一下。

TA的精华主题

TA的得分主题

发表于 2024-6-28 10:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
普通常见字符clean函数就好了。能找到字符,查找替换足够了。
看不见也找不到的字符用left,right函数提取出来,code,unicode一下,基本都清洗得干干净净。
看着文心一言慢慢敲那么多代码,我都做完了。
别说40w数据2.2秒,80w数据用函数也没2.2秒。

TA的精华主题

TA的得分主题

发表于 2024-6-28 10:47 | 显示全部楼层
jiangxiaoyun 发表于 2024-6-28 10:43
普通常见字符clean函数就好了。能找到字符,查找替换足够了。
看不见也找不到的字符用left,right函数提取 ...

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

本版积分规则

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

GMT+8, 2024-11-17 20:32 , Processed in 0.037539 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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