會計部門以不同貨幣(美元、謝克爾和澳元)輸入資金收據。如果貨幣符號與金額包含在同一儲存格中,是否可以按貨幣類型對包含混合貨幣的列進行排序,或者貨幣符號必須與貨幣金額位於單獨的列中?
答案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 列值進行排序(第二級)
並且...你完成了!
PS:現在,如果您願意,您甚至可以安全地隱藏「B」列。
參考:更多關於基於多列的排序。
最後重要說明:
您不必以任何方式操縱/修改金額列中的值,貨幣符號需要位於輔助列中。您不能只將貨幣符號添加到金額值列中,否則您將獲得文字值形式的金額,因此無法像數值那樣對它們進行正確排序! (例如,想想當您將“$80”、“$30”、“$500”作為文字值時會發生什麼:“$500”將在“$80”和“$30”之間排序,因為作為字元:"8" < "5" < "3"
...希望你知道了。