=IFERROR(INDEX( {"balloon","bicycle","bird"}, MATCH("orange", {"red","blue"}, 0)),"NOT FOUND")
Suponha que eu tenha um mapeamento de string para string da seguinte forma:
Existe uma fórmula que pode ser construída (digamos em B1) de tal forma que ela irá procurar o valor de outra célula (digamos A1) e remover a referência da string?
Por exemplo, se A1 for "vermelho", B1 seria "bicicleta". Se a cor não existir (por exemplo, "púrpura"), quero enviar uma string como "NOT FOUND".
Eu preciso que isso seja completamente em linha - na própria fórmula, sem gravar os dados em nenhuma célula / tabela.
Além disso, prefira se não for apenas uma grande fórmula If / Then / Else (que é o meu plano punt). Procurando por algo mais conciso.
Se você está certo em criar uma UDF ( U ser D efinado F ) dentro do VBA, então você pode fazer algo nos moldes de:
Function dereferenceCell(ByVal strReference As String) As String
If strReference = vbNullString Then Exit Function
Select Case strReference
Case "orange"
dereferenceCell = "balloon"
Case "red"
dereferenceCell = "bicycle"
Case "blue"
dereferenceCell = "bird"
Case Else
dereferenceCell = "NOT FOUND"
End Select
End Function
Then in your B1 (or B2 with headers) cell, you can just use the formula
=dereferenceCell(A2)