在Excel或VBA中是否有办法按其角色过滤单元格,然后将其插入单独的列?
例如,我的数据如下所示:
A3200,12
AB2000,32
-300,34
32567,32A
6745,21AB
500+
我希望结果如下:
Column A
3200,12
2000,23
300,34
32567,32
6745,21
500
Column B
A
AB
-
A
AB
+
那么有没有办法从每个单元格中删除所有非数字值并将它们复制到另一列?
答案 0 :(得分:1)
一种方法是创建UDF(用户区分功能)。
将以下2个功能放入VBA模块中:
Function Digits(s As String) As String
With CreateObject("vbscript.regexp")
.Pattern = "[^0-9,]"
.Global = True
Digits = .Replace(s, "")
End With
End Function
Function NonDigits(s As String) As String
With CreateObject("vbscript.regexp")
.Pattern = "[0-9,]"
.Global = True
NonDigits = .Replace(s, "")
End With
End Function
要使用这些功能:如果数据在单元格A1中,只需在单元格B1中键入公式
=Digits(A1)
并在单元格C1中:
=NonDigits(A1)
第一个会将您的数据作为仅包含数字的文本返回。要将其转换为数字,请使用VALUE函数。
第二个返回没有任何数字的数据。