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

时间:2018-09-07 07:48:54

标签: excel vba excel-vba

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

输入:“ 123.64 ABC”

结果:“ 124 ABC”

输入:“ 10.23%ABC”

结果:“ 10%ABC”

我尝试了Google,但似乎所有问题都与提取数字有关,而不是在字符串中设置其格式。我猜想Excel格式工具的输入需要数字类型,因此它们不适用于包含字符串的单元格。那有可能吗?我正在考虑拆分字符串->格式化数字->然后写回字符串。有人可以为此建议解决方案吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以以此开始

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

祝你好运

答案 1 :(得分:0)

您可以使用公式而不是VBA。

echo "<script type='text/javascript'>var annulla = window.confirm(Do you Confirm?');</script>";

echo "<script type='text/javascript'>if (annulla){ HERE(RUN PHP FUNCTION Calls)}</script>";

echo "<script type='text/javascript'>if(!annulla) {console.log('don't confirm');}</script>";

function Calls(){// code...}

上表在单元格| | A | B | C | |---|------------|----|---------| | 1 | 123.64 ABC | # | 124 ABC | | 2 | 10.23% ABC | #% | 10% ABC | A1中具有您的原始值。
单元格A2B1包含您要作为该行数字的text format

单元格B2包含以下公式:

C1

编辑::需要=TEXT(VALUE(LEFT(A1,FIND(" ",A1)-1)),B1) & MID(A1,FIND(" ",A1),LEN(A1)) ,以便在重新格式化之前将10.23%转换为0.1023 ...当我第一次尝试 {{1} }它返回了一个错误,但现在却没有...因此,可能根本不需要VALUE。 :)