吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6415|回复: 51
收起左侧

[Windows] 用文言一心写VBA代码,实现WPS清除前后空字符

[复制链接]
树洞先生 发表于 2024-6-24 18:53
本帖最后由 树洞先生 于 2024-6-25 10:49 编辑

工作中用EXCEL会比较多点,但是也眼馋WPS的有些功能,对VBA也算会用吧,想着用文言一心来折腾折腾,感觉还不错。
用了40万条数据测试下来2.2秒左右。估计还是要看电脑配置吧。
上一波对话图:
文言_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
最后上测试过的代码,以及更改了一行位置,将单元格设
置为文本这行的位置。权当看看 ,但是真能跑。
处理的问题类型是这种
image.png


[Asm] 纯文本查看 复制代码
Private regex As Object ' 静态的正则表达式对象
Private Sub InitializeRegex() ' 初始化正则表达式对象
If regex Is Nothing Then
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
End If
End Sub
Function CleanStringWithRegex(ByVal inputString As String) As String
InitializeRegex ' 确保 regex 已创建
regex.Pattern = "\s+|^ | $" ' 合并两个替换操作的正则表达式
CleanStringWithRegex = regex.Replace(inputString, " ")
End Function
' ... 其他代码保持不变,但在调用 CleanStringWithRegex 之前确保 InitializeRegex 已被调用 ...


Sub CleanAndFormatAsText_RegexArray()
Dim rng As Range
Dim cellValues() As Variant
Dim outputValues() As Variant
Dim i As Long, j As Long, rowCount As Long, colCount As Long
Dim startTime As Double
startTime = Timer
' 确保用户已经选定了要处理的单元格范围
If TypeName(Selection) <> "Range" Then
MsgBox "请先选择一个单元格范围。", vbExclamation, "未选择范围"
Exit Sub
End If
' 将选定范围赋值给rng变量,并获取其尺寸
Set rng = Selection
rowCount = rng.Rows.Count
colCount = rng.Columns.Count
' 读取数据到数组中
cellValues = rng.Value2
rng.NumberFormat = "@"
' 为输出值创建同样大小的数组
ReDim outputValues(1 To rowCount, 1 To colCount)
' 关闭屏幕更新和计算,以提高性能
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' 在数组中处理数据
For i = 1 To rowCount
For j = 1 To colCount
If Not IsEmpty(cellValues(i, j)) Then
outputValues(i, j) = CleanStringWithRegex(CStr(cellValues(i, j)))
Else
outputValues(i, j) = ""
End If
Next j
Next i
' 将处理后的数据写回Excel
rng.Value2 = outputValues
' 设置单元格格式为文本
'rng.NumberFormat = "@"
' 恢复屏幕更新和计算
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
' 显示处理完成消息和所用时间
MsgBox "选定范围内的异常字符已被清理,操作完成。" & vbCrLf & _
"所用时间: " & FormatNumber(Timer - startTime, 2) & " 秒", vbInformation, "处理完成"
End Sub

免费评分

参与人数 5吾爱币 +3 热心值 +5 收起 理由
nndyky + 1 + 1 鼓励转贴优秀软件安全工具和文档!
lefio + 1 整体思路很有借鉴性。
Lishi8 + 1 + 1 用心讨论,共获提升!
AngIos + 1 谢谢@Thanks!
dogox + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaoxhm 发表于 2024-6-26 12:32
本帖最后由 xiaoxhm 于 2024-6-26 12:34 编辑

这玩意儿叫文心一言,而且大语言模型比GPT差了N倍建议还是使用GPT,标记量少很多,代码能力弱的和小学生差不多
很多GPT上已经非常成熟的prompt它根本识别不了,对牛弹琴,用不了一点
 楼主| 树洞先生 发表于 2024-6-25 10:32

刚开始也是不知道  但是一步步上难度 测试了还真行

点评

还得是你啊  发表于 2024-6-26 10:37
akinet 发表于 2024-6-24 19:04
 楼主| 树洞先生 发表于 2024-6-24 19:05
akinet 发表于 2024-6-24 19:04
文言一心  多少钱一个月?

没有开vip哦  我也不知道  
ThemanRonin 发表于 2024-6-24 19:09
akinet 发表于 2024-6-24 19:04
文言一心  多少钱一个月?
3.5免费。文心一言4.0会员要 50 块钱一个月
ysjd22 发表于 2024-6-24 19:24
其实就一个正则的事
muyu08 发表于 2024-6-25 01:11
谢谢分享!
Lty20000423 发表于 2024-6-25 07:28
akinet 发表于 2024-6-24 19:04
文言一心  多少钱一个月?

我用免费的
,网上有付费的
zbking1314 发表于 2024-6-25 08:12
没有会员的话,基本上普通人无法使用此功能
virgin_8 发表于 2024-6-25 08:17
我的好多代码这是gpt3.5要的
syrf123 发表于 2024-6-25 08:29
谢谢分享好的小程序。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 04:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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