Questão Função IF com várias opções em uma célula


Eu tenho alguns dados que são respostas para um dos meus formulários de perguntas.

Algumas perguntas podem ter várias respostas. Por exemplo:

Qual é o seu hobby?

  1. Viajando
  2. filmando
  3. Esporte
  4. Dançando

Cada resposta tem seu próprio número (como mostrado acima).

ou seja, 1 é para viajar, 2 para filmagem, etc.

Algumas das células têm várias respostas.

Por exemplo: A célula A3 possui 1,3,4 no interior. Números é separado por vírgulas.

Em outra planilha do Excel, estou escrevendo a tabela com respostas que são representadas não como números, mas como nomes (palavras). Com respostas simples, é fácil fazer por função IF:

IF(A1=1,"Traveling",IF(A1=2,"Filming",IF(A1=3,"Sport",IF(A1=4,"Dancing","Error"))))

Mas com várias respostas eu tenho um problema. Como separar números, então o Excel pode entender, que a célula A3 tem 3 respostas: Viajando (1), Esporte (3) e Dançando (4)?


2


origem


Devo usar com IF apenas uma função SEARCH? - mzfx


Respostas:


Aqui está uma solução simples, com o seu 1,3,4 corda na célula A1 a seguinte fórmula retornará Travelling,Sport,Dancing, como requerido:

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

Nota: este método (usando SUBSTITUTE poderia ser repetido até um máximo de número 9. Embora eu não recomendaria isso, porque se tornará um pouco ilegível.


1





Tente usar PESQUISA gostar IF(SEARCH("1",A1),"Traveling") ao invés de IF(A1=1,"Traveling") e assim por diante (por ex. IF(SEARCH("3",A1),"Sport"))


1



Mas se eu não tiver 1, então ganhei #VALUE! . Mesmo se eu tiver a instrução IF_False. E mais uma pergunta: como devo combinar funções para escrever, por exemplo, "Viajar, esporte, dança". Se na célula houver 1,3,4? - mzfx
E o que devo fazer se o número de respostas for 13? Se Cell com respostas terá por exemplo 2,13 E eu vou escrever Search (1, A1) ele vai encontrar 1, pois 13 tem numero 1. - mzfx


Tente o seguinte Função definida pelo usuário (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

enter image description here

Funções Definidas pelo Usuário (UDFs) são muito fáceis de instalar e usar:

  1. ALT-F11 traz a janela do VBE
  2. ALT-I ALT-M abre um novo módulo
  3. cole o material e feche a janela do VBE

Se você salvar a pasta de trabalho, a UDF será salva com ela. Se você estiver usando uma versão do Excel posterior a 2003, deverá salvar o arquivo como .xlsm ao invés de .xlsx.

Para remover o UDF:

  1. abrir a janela do VBE como acima
  2. limpar o código
  3. feche a janela do VBE

Para usar o UDF do Excel:

=MultiReturns(A1)

Para saber mais sobre macros em geral, consulte:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

e

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

e para detalhes sobre UDFs, consulte:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

As macros devem estar habilitadas para que isso funcione!


1



Para o novo Excel 2016, você precisa salvar como "Pasta de trabalho habilitada para macro do Excel" * .xlsm. - ejbytes
@ejbytes Você está correto! - Gary's Student