Предположим, у меня есть отображение строки в строку следующим образом:

  • "оранжевый" => "воздушный шар"
  • "красный" => "велосипед"
  • "синий" => "птица"

Есть ли формула, которая может быть построена (скажем, в B1) так, что она будет искать значение из другой ячейки (скажем, A1) и разыменовывать строку?

Например, если A1 "красный", то B1 будет "велосипед". Если цвет не существует (например, "фиолетовый"), то я хочу вывести строку типа "НЕ НАЙДЕНО".

Мне нужно, чтобы это было полностью в строке - в самой формуле, без записи данных в какие-либо ячейки / таблицы.

Кроме того, предпочтите, если это не просто одна большая формула If/Then/Else (это мой план действий). Ищете что-то более лаконичное.

2 ответа2

3

Если у вас все в порядке с созданием UDF (U ser D определено как F ) в VBA, вы можете сделать что-то вроде:

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

Затем в ячейке B1 (или B2 с заголовками) вы можете просто использовать формулу =dereferenceCell(A2)

2
=IFERROR(INDEX( {"balloon","bicycle","bird"}, MATCH("orange", {"red","blue"}, 0)),"NOT FOUND")

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