Vba 在字符串中格式化数字而不在Excel中提取它们

Vba 在字符串中格式化数字而不在Excel中提取它们,vba,excel,Vba,Excel,所以我的问题是:我想格式化字符串中的数字。 例如: 输入:“123.64 ABC” 结果:“124 ABC” 或 输入:“10.23%ABC” 结果:“10%ABC” 我试过谷歌,但似乎所有的问题都是关于提取数字,而不是在字符串中格式化数字。我猜Excel格式工具的输入需要数字类型,所以它们不能处理包含字符串的单元格。那么这可能吗?我正在考虑拆分字符串->格式化数字->然后写回字符串。有人能提出解决办法吗?谢谢。你可以从这个开始 Sub teste() txt = "123.64 ABC"

所以我的问题是:我想格式化字符串中的数字。 例如:

输入:“123.64 ABC”

结果:“124 ABC”

输入:“10.23%ABC”

结果:“10%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)