У меня есть некоторые данные, которые являются ответами на одну из моих форм вопросов.
На некоторые вопросы может быть несколько ответов. Например:
Какое твое хобби?
- Путешествие
- Съемки фильма
- Спорт
- Танцы
Каждый ответ имеет свой номер (как показано выше).
т.е. 1 — для путешествий, 2 — для съемок и т.д.
Некоторые ячейки имеют несколько ответов.
Например: в ячейке А3 находятся числа 1, 3, 4. Числа разделяются запятыми.
На другом листе Excel я пишу таблицу с ответами, которые представлены не в виде чисел, а в виде имен (слов). С одинарными ответами это легко сделать с помощью функции ЕСЛИ:
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
строкой в ячейкеА1следующая формула вернет 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 будет сохранен вместе с ней. Если вы используете версию Excel позже 2003, вы должны сохранить файл как.xlsmскорее, чем.xlsx.
Чтобы удалить UDF:
- откройте окно VBE, как указано выше
- очистить код
- закрыть окно VBE
Чтобы использовать UDF из Excel:
=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
Для работы этого метода должны быть включены макросы!