我有一个列,其中几乎每个单元格都是由数字、字母和符号(“TS-403”或“TSM-7600”)组成的。我希望删除/用空字符串替换 * 不是 * 整数的每个字符,这样我就只剩下数字(“403”)。
我想到了两种方法:
我认为最好的方法是创建一个0-9的整数数组,然后用for循环遍历单元格,如果单元格中的字符串包含一个字符,而该字符 * 不在数组中 *,则该符号(而不是整个单元格)应该被擦除。
Sub fixRequestNmrs()
Dim intArr() as Integer
ReDim intArr(1 to 10)
For i = 0 to 9
intArr(i) = i
Next i
Dim bRange as Range
Set bRange = Sheets(1).Columns(2)
For Each cell in bRange.Cells
if cell.Value
// if cell includes char that is not in the intArr,
// then that char should be deleted/replaced.
...
End Sub()
也许第二种方法更简单,那就是使用Split()
函数,因为'-'后面总是跟数字,然后用“"替换第一个子字符串。我对如何将Split()函数与一个范围和一个替换函数结合使用感到非常困惑...
For Each cell in bRange.Cells
Cells.Split(?, "-")
...
3条答案
按热度按时间uurv41yg1#
使用Like运算符将数字转换为整数
功能
工作表示例
在VBA中(简单)
在Excel中
fykwrbwg2#
如果您有
CONCAT
函数,则可以使用一个相对简单的公式来完成此操作--不需要VBA:如果您更喜欢早期版本的Excel中的非VBA解决方案,则可以使用更复杂的公式,但我必须返回到我的文件中才能找到它。
kuuvgm7e3#
一个复杂的函数
GetVal()
以下功能
String2Arr()
将字符串转换为单个字符数组arr
Application.Match
(这里没有第三个参数,该参数主要用于精确搜索,并通过比较两个数组),将它们隔离为数字(类别代码6)或非数字类别(其他)Instr()
查找原始字符串中的起始位置Val()
返回右子字符串的值(~〉参见注解)。备注
Val
函数可以将带有起始数字的(子)字符串转换为数字,即使后面有非数字字符。String2Arr()
*将字符串原子化为单个字符数组:
示例呼叫