一个单元格中有多个选项的 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字符串放在单元格中A1以下公式将Travelling,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

必须启用宏才能使其工作!

相关内容