会计部门输入不同货币($,谢克尔和澳大利亚镑)的货币收据。如果货币符号包含在具有金额的同一单元格中,或者货币符号必须与货币金额位于单独的列中,是否可以按货币类型对包含混合货币的列进行排序?
会计部门输入不同货币($,谢克尔和澳大利亚镑)的货币收据。如果货币符号包含在具有金额的同一单元格中,或者货币符号必须与货币金额位于单独的列中,是否可以按货币类型对包含混合货币的列进行排序?
Answers:
前言:我一开始并不理解你的问题,但后来我意识到你不能为此处理文本值(货币符号+数字),所以你需要处理包含格式化值的单元格,以便它们显示为货币金额,但实际上只包含数字(只是数字,没有货币符号)。
好吧,既然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)现在选择两列并进行自定义多级排序:
转到“数据”功能区,查找“排序和过滤”组,单击“排序”;
排列COLUMN B VALUES(第一级)
点击“添加级别”
列COLUMN A VALUES(第二级)
而且......你已经完成了!
P.S。:现在,如果您愿意,您甚至可以安全地隐藏“B”列。
REFS:更多内容 基于多列的排序 。
重要说明:
您不必操纵/修改金额列中的值,货币符号必须在辅助列中为此。
您不能只将货币符号添加到金额值列中,否则,您将获得金额作为文本值,因此无法按数值对其进行正确排序! (例如,想想当你有“80美元”,“30美元”,“500美元”作为文本值时会发生什么:“$ 500”将在“$ 80”和“$ 30”之间排序,因为chars: "8" < "5" < "3"
...希望你明白了。)