gpt4 book ai didi

excel - 独立于本地化的自定义编号(价格)格式

转载 作者:行者123 更新时间:2023-12-04 21:45:57 29 4
gpt4 key购买 nike

我想知道是否可以使用不依赖于 Excel 应用程序本地化(欧盟/美国)的 Excel 公式来自定义数字格式?
例如,我的值为 1291660。
然后使用公式=TEXT(A1;"# ##0,00") .我得到输出 1 291 660,00 .无论如何,目标是拥有1.291.660,00作为输出。有没有 Excel 专业人士给点建议?
我试过=TEXT(A1;"#.##0,00") - 这没用
我认为 VBA 是唯一的解决方案。我发现了关于同一主题的旧问题,但似乎提供的解决方案由于某种原因不起作用?
Ultimate 1000 separator using VBA

Function CustomFormat(InputValue As Double) As String
Dim sThousandsSep As String
Dim sDecimalSep As String
Dim sFormat As String

sThousandsSep = Application.International(xlThousandsSeparator)
sDecimalSep = Application.International(xlDecimalSeparator)

' Up to 6 decimal places
sFormat = "#" & sThousandsSep & "###" & sDecimalSep & "######"

CustomFormat = Format(InputValue, sFormat)
If (Right$(CustomFormat, 1) = sDecimalSep) Then
CustomFormat = Left$(CustomFormat, Len(CustomFormat) - 1)
End If

' Replace the thousands separator with a space
' or any other character
CustomFormat = Replace(CustomFormat, sThousandsSep, " ")
End Function
通过替换 CustomFormat = Replace(CustomFormat, sThousandsSep, " ")CustomFormat = Replace(CustomFormat, sThousandsSep, ".")输出为 .1 291 660

最佳答案

您可以使用:

=SUBSTITUTE(SUBSTITUTE(FIXED(A1,2,0),",","."),".",",",INT(LEN(A1)/3)+1)

它的工作方式是在欧盟系统上 FIXED()将返回: 1.291.660,00但在美国系统上它应该返回 1,291,660.00 .要创建相同的输出字符串,我们可以 SUBSTITUTE()所有的逗号都是点。第二个 SUBSTITUTE()然后将仅将最后一个点替换回逗号。为了找到正确的索引,我使用了 INT(LEN(A1)/3)+1这在 1291660 这样的迭代器上效果很好.如果您碰巧有十进制值,则可以将其更改为:
=SUBSTITUTE(SUBSTITUTE(FIXED(A1,2,0),",","."),".",",",INT(LEN(INT(A1))/3)+1)

编辑:
以上应始终返回所需的格式, 但是 这是一个字符串。要在任何进一步的计算中返回数值,您可以使用 NUMBERVALUE() :
=NUMBERVALUE(C1,",",".")

关于excel - 独立于本地化的自定义编号(价格)格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66042372/

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