首页 > 编程知识 正文

vba读取excel中某个sheet的行数,excel vba 一列输入数字自动加减

时间:2023-05-06 07:12:40 阅读:192740 作者:532

0、表格内容 A列B列手机2134型号3242135手机325型号2手机13632型号61、Word法 1.1 提取非数字

遇事不决就去隔壁找Word,将表格A列内容复制到Word中,打开“替换”窗口,输入[0-9],点开“高级搜索”勾选“使用通配符”,点击全部替换,将替换好的内容再复制回Excel表格中。

1.2 提取数字

将表格A列内容复制到Word中,打开“替换”窗口,输入[!0-9],点开“高级搜索”勾选“使用通配符”,点击“全部替换”,将替换好的内容再复制回Excel表格中。

2、自定义函数法

按Alt+F11,打开VBA编辑器,选中工作薄右键插入模块,在代码窗口粘贴代码。

2.1 提取非数字 Function Extract_numbers(aa As Range) Dim n As Integer, i As Integer, tem n = Len(aa.Value) For i = 1 To n If IsNumeric(Application.Find(Mid(aa.Value, i, 1), "0123456789")) = False Then tem = tem & Mid(aa.Value, i, 1) End If Next Extract_numbers = temEnd Function

在表格中输入对应公式

2.2 提取数字 Function Extract_Non_numbers(aa As Range) Dim n As Integer, i As Integer, tem n = Len(aa.Value) For i = 1 To n If IsNumeric(Application.Find(Mid(aa.Value, i, 1), "0123456789")) = True Then tem = tem & Mid(aa.Value, i, 1) End If Next Extract_Non_numbers = temEnd Function

在表格中输入对应公式

3、宏程序法

按Alt+F11,打开VBA编辑器插入模块,在代码窗口中粘贴代码。
然后关闭VBA编辑器,返回Excel界面,然后按Alt+F8打开“宏”对话框,选择对应宏执行即可。

3.1 提取非数字 Sub extra_No() Dim d As Object, arr, brr, i& Dim sr As String Set d = CreateObject("scripting.dictionary") Set regex = CreateObject("VBScript.RegExp") arr = [a1:a15] brr = [b1:b15] For i = 1 To UBound(brr) sr = Range("a" & i) With regex .Global = True .Pattern = "d" '这里也可以写成.Pattern = "[u4e00-u9fa5]" Range("b" & i) = .Replace(sr, "") End With With [b1:b15] .NumberFormat = "General" End With NextEnd Sub 3.2 提取数字 Sub extra_No() Dim d As Object, arr, brr, i& Dim sr As String Set d = CreateObject("scripting.dictionary") Set regex = CreateObject("VBScript.RegExp") arr = [a1:a15] brr = [b1:b15] For i = 1 To UBound(brr) sr = Range("a" & i) With regex .Global = True .Pattern = "D" Range("b" & i) = .Replace(sr, "") End With With [b1:b15] .NumberFormat = "General" End With NextEnd Sub

参考:
他山之石——在VBA中使用正则表达式-Part2(Regular Expression)
提取一个单元格中的文本(非数字)-自定义函数

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。