gpt4 book ai didi

excel - 在文本字符串中间的货币值末尾添加 "0"

转载 作者:行者123 更新时间:2023-12-04 21:40:01 24 4
gpt4 key购买 nike

我有一个电子表格,其中的单元格的内容是文本和美元值的混合。整个单元格是一串文本。例如,一个单元格可能包含“Tom owes $65.5”

现在,不幸的是,我得到的电子表格中的美元值没有最后一个“0”,而且由于它们只是文本字符串,我无法轻松地格式化单元格。我尝试使用 find 和 replace 将值更改为正确的格式,但我有数千条记录,尝试并考虑所有情况需要很长时间。

有没有办法检查字符串的一部分是否是美元金额,然后在需要时附加尾随 0?就像是

如果 $* 是 = 4 个字符,则在末尾附加 0
如果 $* 小于 3 个字符,则将 .00 附加到末尾

我还应该说,货币值并不总是在文本字符串的末尾,它们也不总是以小数点后一位结尾。可以在句子中间找到“$6.75”。此外,只是为了在齿轮上再扔一个 Spanner ,字符串中可能还有其他数字,所以我需要能够仅定位美元符号后面的数字。

最佳答案

我认为这个 VBA 用户定义函数 (UDF) 可以满足您的需求。它基于我在 http://yoursumbuddy.com/regex-function-sum-numbers-string/ 中的开创性工作:

Function FixDollarsInStrings(Instring As String) As String

Dim regex As VBScript_RegExp_55.RegExp
Dim rgxMatch As VBScript_RegExp_55.Match
Dim rgxMatches As VBScript_RegExp_55.MatchCollection
Dim Outstring As String
Set regex = New VBScript_RegExp_55.RegExp
With regex
.Global = True
.Pattern = "(^| )\$(\d+|\.|,)+((?= )|$)"
Outstring = Instring
If .test(Instring) Then
Set rgxMatches = .Execute(Instring)
For Each rgxMatch In rgxMatches
If IsNumeric(Trim(Replace(rgxMatch, ",", ""))) Then
Outstring = Replace(Outstring, Trim(rgxMatch), Format(rgxMatch, "$#,##0.00"))
End If
Next rgxMatch
End If
End With
FixDollarsInStrings = Outstring
End Function

要让它工作,您首先需要设置对 Microsoft VbScript Regular Expressions 5.5 的引用。在 VBE 中的工具>引用中。然后将此代码复制到常规模块。

然后你这样称呼它:

=fixDollarsInStrings(A2)

enter image description here

关于excel - 在文本字符串中间的货币值末尾添加 "0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com