IF 函數在一個儲存格中具有多種選擇

IF 函數在一個儲存格中具有多種選擇

我有一些數據是我的一份問題表的答案。

有些問題可能有多個答案。例如:

你有什麼嗜好?

  1. 旅行
  2. 拍攝
  3. 運動
  4. 跳舞

每個答案都有自己的編號(如上圖)。

即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) 非常易於安裝和使用:

  1. ALT-F11 調出 VBE 窗口
  2. ALT-I ALT-M 開啟新模組
  3. 將內容貼進去並關閉 VBE 窗口

如果儲存工作簿,UDF 將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案儲存為.xlsm而不是.xlsx

若要刪除 UDF:

  1. 如上所示調出 VBE 窗口
  2. 清除程式碼
  3. 關閉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

必須啟用巨集才能使其工作!

相關內容