我有一些数据,它们是我的一个问题表格的答案。
有些问题可能有多个答案。例如:
你有什么爱好?
- 旅行
- 拍摄
- 运动
- 跳舞
每个答案都有自己的编号(如上所示)。
例如,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) 非常容易安装和使用:
- 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
必须启用宏才能使其工作!