gpt4 book ai didi

excel - 如何在不循环的情况下清除货币格式的范围内的单元格

转载 作者:行者123 更新时间:2023-12-03 22:03:41 25 4
gpt4 key购买 nike

我不确定这是否是这里的问题,如果不是,请射击我!

我有一个包含数字和货币格式数据的电子表格。我要删除单元格中货币格式 的值仅限 .

我可以用一个简单的 For Each 来做到这一点循环,但是,由于电子表格的大小,这效率不高。

Option Explicit

Sub ClearCurrency()

Dim myRange As Range
Dim cell As Range

Set myRange = Selection

For Each cell In myRange
If cell.NumberFormat = "$#,##0.00" Then
cell.ClearContents
End If
Next cell

End Sub

我已阅读 VarTypes.NumberFormat但我无法拼凑出更有效的解决方案。

我知道我不能将信息存储到一个数组中循环,所以有更快的方法吗?

最佳答案

正如评论中所建议的,您可以使用 SearchFormatReplaceFormat为此,请执行以下操作:

Sub ClearCurrency()

If Not TypeOf Selection Is Excel.Range Then Exit Sub

With Application
.FindFormat.Clear
If .DecimalSeparator = "." Then .FindFormat.NumberFormat = "$#,##0.00"
If .DecimalSeparator = "," Then .FindFormat.NumberFormat = "\$#,##0.00"
End With

Selection.Replace What:="*", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False

End Sub

值得关注

在处理非 en_US 本地设置并使用自定义数字格式时 "$#,##0.00"您可能会遇到 Error 1004警告。格式无法识别,会出错。为了防止这种情况,您可以;使用 NumberFormatLocal :
Application.FindFormat.NumberFormatLocal = "$#.##0,00"

注意十进制逗号和分组字符的区别。第二种选择是使用反斜杠转义序列,该反斜杠指示以下字符应按原样使用:
Application.FindFormat.NumberFormat = "\$#,##0.00"

现在小数点和分组字符可以保留在原位。因此我们需要一个检查来测试本地设置,这可以通过 Application.DecimalSeparator 来完成。 ,如当前解决方案中所建议的那样。

关于excel - 如何在不循环的情况下清除货币格式的范围内的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58219734/

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