我有一些數據是我的一份問題表的答案。
有些問題可能有多個答案。例如:
你有什麼嗜好?
- 旅行
- 拍攝
- 運動
- 跳舞
每個答案都有自己的編號(如上圖)。
即1用於旅行,2用於拍攝等。
有些細胞有多個答案。
例如:A3單元格裡面有1,3,4。數字用逗號分隔。
在另一個 Excel 工作表中,我正在編寫包含答案的表格,這些答案不表示為數字,而是表示為名稱(單字)。對於單一答案,很容易透過函數 IF 得出:
IF(A1=1,"Traveling",IF(A1=2,"Filming",IF(A1=3,"Sport",IF(A1=4,"Dancing","Error"))))
但有多個答案我有一個問題。如何分隔數字,以便 Excel 能夠理解,而儲存格 A3 有 3 個答案:旅行 (1)、運動 (3) 和跳舞 (4)?
答案1
這是一個簡單的解決方案,將1,3,4
字串放在單元格中A1Travelling,Sport,Dancing
根據需要,以下公式將傳回:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,1,"Travelling"),2,"Filming"),3,"Sport"),4,"Dancing")
注意:此方法(使用SUBSTITUTE
最多可重複次數為 9。儘管我不建議這樣做,因為它會變得有些不可讀。
答案2
嘗試使用搜尋像IF(SEARCH("1",A1),"Traveling")
代替IF(A1=1,"Traveling")
等等(例如IF(SEARCH("3",A1),"Sport")
)
答案3
嘗試以下操作使用者定義函數 (UDF):
Public Function MultiReturns(sIN As String) As String
Dim i As Long
nums = Array("1", "2", "3", "4")
lets = Array("Traveling", "Filming", "Sport", "Dancing")
MultiReturns = ""
If sIN = "" Then Exit Function
ary = Split(Replace(sIN, " ", ""), ",")
For Each a In ary
For i = LBound(nums) To UBound(nums)
If a = nums(i) Then MultiReturns = MultiReturns & "," & lets(i)
Next i
Next a
MultiReturns = Mid(MultiReturns, 2)
End Function
使用者定義函數 (UDF) 非常易於安裝和使用:
- ALT-F11 調出 VBE 窗口
- ALT-I ALT-M 開啟新模組
- 將內容貼進去並關閉 VBE 窗口
如果儲存工作簿,UDF 將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案儲存為.xlsm而不是.xlsx。
若要刪除 UDF:
- 如上所示調出 VBE 窗口
- 清除程式碼
- 關閉VBE視窗
若要使用 Excel 中的 UDF:
=MultiReturns(A1)
要了解有關巨集的更多信息,請參閱:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有關 UDF 的詳細信息,請參閱:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必須啟用巨集才能使其工作!