Vba 在字符串中格式化数字而不在Excel中提取它们
所以我的问题是:我想格式化字符串中的数字。 例如: 输入:“123.64 ABC” 结果:“124 ABC” 或 输入:“10.23%ABC” 结果:“10%ABC”Vba 在字符串中格式化数字而不在Excel中提取它们,vba,excel,Vba,Excel,所以我的问题是:我想格式化字符串中的数字。 例如: 输入:“123.64 ABC” 结果:“124 ABC” 或 输入:“10.23%ABC” 结果:“10%ABC” 我试过谷歌,但似乎所有的问题都是关于提取数字,而不是在字符串中格式化数字。我猜Excel格式工具的输入需要数字类型,所以它们不能处理包含字符串的单元格。那么这可能吗?我正在考虑拆分字符串->格式化数字->然后写回字符串。有人能提出解决办法吗?谢谢。你可以从这个开始 Sub teste() txt = "123.64 ABC"
我试过谷歌,但似乎所有的问题都是关于提取数字,而不是在字符串中格式化数字。我猜Excel格式工具的输入需要数字类型,所以它们不能处理包含字符串的单元格。那么这可能吗?我正在考虑拆分字符串->格式化数字->然后写回字符串。有人能提出解决办法吗?谢谢。你可以从这个开始
Sub teste()
txt = "123.64 ABC"
pos = InStr(1, txt, " ", vbTextCompare) 'search for space
num = Left(txt, pos - 1) 'get number until space
'in my case i have to replace a "." by "," to be a number, but you have to test what happens in your case
num = Replace(num, ".", ",", 1, 1)
numR = Round(num) ' round number
Final = numR & " " & Mid(txt, pos + 1, 500) ' join round number and rest of string
End Sub
祝你好运你可以使用公式而不是VBA
| | A | B | C |
|---|------------|----|---------|
| 1 | 123.64 ABC | # | 124 ABC |
| 2 | 10.23% ABC | #% | 10% ABC |
上表中的单元格A1
&A2
单元格
B1
和B2
包含您想要的该行数字
单元格C1
包含以下公式:
=TEXT(VALUE(LEFT(A1,FIND(" ",A1)-1)),B1) & MID(A1,FIND(" ",A1),LEN(A1))
编辑:
需要值
,以便在重新格式化之前将10.23%转换为0.1023。。。当我第一次尝试不使用值时,它返回了一个错误,但现在它没有。。。因此可能不需要值
。) 到目前为止你研究/尝试了什么?您的问题将显示您的代码,并描述您遇到的具体问题。您的想法听起来不错,为什么不尝试一下呢?您只需找到字符串中的
空格,将其拆分为左侧
和右侧
部分。谢谢各位,我以后会尝试更具体一些。谢谢!正如我所想。现在我只需要从中创建一个外接程序。无需创建外接程序,将代码放在工作簿中的一个普通模块中,并进行以下更改:将过程名称更改为函数-function teste(txt作为字符串)作为字符串,删除txt=“123.64 ABC”
行并将最后一行的Final
更改为teste
。然后可以直接在单元格中使用=teste(“123.64 ABC”)
或=teste(A1)
。