在 Excel 2010 中按不同货币符号排序

在 Excel 2010 中按不同货币符号排序

会计部门以不同的货币($、谢克尔和澳元)输入收款。如果货币符号与金额位于同一单元格中,是否可以按货币类型对包含混合货币的列进行排序,还是货币符号必须与金额位于不同的列中?

答案1

序言:一开始我不明白你的问题,但后来我意识到你不能处理文本值(货币符号+数字),所以你需要处理包含格式化的值的单元格,以便它们显示为货币金额,但实际上只包含数字(只是数字,没有货币符号)。

好吧,由于 Excel 目前仍然不提供基于单元格格式(颜色/图标除外)的排序,所以我想到的唯一解决方案基本上就是您假设的第二个解决方案:您需要在辅助列中为每个金​​额(行)添加一个相对货币符号;这样您就可以进行自定义多级排序(第一级在货币栏,第二级在金额栏)并整理您的数据。

现在,我能做的是建议您一种自动化流程的方法,以加快速度,并假设您不想手动为每个金额行编写货币符号(是吗?;-D)。

好的,如果您可以使用 VBA 来实现这一点,那么我们开始吧......

1)将以下VBA代码放入模块中:

Public Function GetCurrency(ByVal r As Range) As String
    Application.Volatile
    Static RegX As Object
    If RegX Is Nothing Then Set RegX = CreateObject("VBScript.RegExp")
    With RegX
        .Global = True
        .Pattern = "[0-9\-\.,\s]"
        GetCurrency = .Replace(r.Text, "")
    End With
End Function

2) 现在,假设金额值在“A”列,货币符号在“B”列,将此公式放在第一列 B 行(B1 单元格)中:

=GetCurrency(A1)

然后将该公式复制到同一列 (B) 的所有需要​​的后续行。

好的,现在您得到了两列,一列包含格式化的金额值(A),另一列包含您需要的相对货币符号(B)。

请注意,只有满足我的前言假设,并且因此您将包含数字值的“A”列格式化为正确的货币时,此方法才会起作用。如果不是,此时必须手动格式化每个“A”列的行/单元格,这与直接在每个“B”列的行/单元格上手动写入货币符号没有任何区别,也没有任何好处/收益

3)现在选择两列并进行自定义多级排序:

转到“数据”功能区,找到“排序和过滤”组,单击“排序”;

对 B 列值进行排序(第一级)

点击“添加级别”

对 A 列值进行排序(第二级)

然后...你就完成了!

附言:现在,如果您愿意,您甚至可以安全地隐藏“B”列。

参考文献: 更多信息基于多列的排序


最后重要说明:

您无需以任何方式操纵/修改金额列中的值,为此,货币符号必须位于辅助列中。您不能只将货币符号添加到金额值列中,因为否则,您将获得文本值形式的金额,因此无法像数字值那样正确对其进行排序!(例如,想想当您有“$80”、“$30”、“$500”作为文本值时会发生什么:“$500”将排序在“$80”和“$30”之间,因为作为字符:"8" < "5" < "3"...希望您明白了。)

相关内容