2

У меня есть некоторые данные, которые являются ответами на одну из моих форм вопросов.

Некоторые вопросы могут иметь несколько ответов. Например:

Какое твое хобби?

  1. путешествующий
  2. Съемки фильма
  3. спорт
  4. танцы

Каждый ответ имеет свой номер (как показано выше).

т.е. 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)?

3 ответа3

1

Попробуйте использовать ПОИСК, например, IF(SEARCH("1",A1),"Traveling") вместо IF(A1=1,"Traveling") и т.д. (Например, IF(SEARCH("3",A1),"Sport"))

1

Попробуйте следующую пользовательскую функцию (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 будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx.

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно 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

Макросы должны быть включены, чтобы это работало!

1

Вот простое решение: с вашей строкой 1,3,4 в ячейке A1 следующая формула при необходимости вернет Travelling,Sport,Dancing :

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,1,"Travelling"),2,"Filming"),3,"Sport"),4,"Dancing")

Примечание: этот метод (с использованием SUBSTITUTE может повторяться максимум до числа 9). Хотя я бы не советовал, потому что это станет несколько нечитаемым.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .