Ответ 1
Звучит так, как Data Validation (allow List) в сочетании с VLOOKUP будет делать то, что вы хотите.
На листе 2 настройте описание/список кодов. Сделайте его именованным диапазоном (помогает избежать круговых эталонных проблем).
На листе 1 в столбце описания используйте функцию "Проверка данных", чтобы создать списки выпадающих списков, которые ссылаются на столбец описания списка. В столбце кода используйте функцию VLOOKUP, отменив значение выпадающего списка.
=IF(B4="", "", VLOOKUP(B4, FruitList, 2, FALSE))
Обновлено -
Я начинаю понимать, что вы подразумеваете под "без вспомогательной колонки", но я не уверен, что вы можете получить именно то, что хотите. Факт дизайна Excel: то, что вы видите, это то, что вы получаете, то есть значение, отображаемое в ячейке, является эффективным значением этой ячейки. Вы не можете отображать на ячейке одно значение, но "содержать" другое значение. В HTML такая вещь "мертвая простота", но элемент управления HTML не создан для той же цели, что и ячейка в электронной таблице. Это две вещи одновременно: значение и представление пользовательского интерфейса этого значения. Ячейка электронной таблицы может содержать способ определения значения (раскрывающийся список, формула и т.д.), Но любое значение, которое оно достигает, будет значением, которое оно показывает.
Excel поддерживает формы с такими вещами, как комбинированные поля, но я считаю, что значение все равно выводится в другую ячейку.
Обычный подход к этому - использовать проверку данных для создания выпадающего списка и иметь отдельный столбец, используя VLOOKUP для кода. Если у вас действительно нет другого столбца, чтобы содержать код, я не уверен, что вам сказать. Это будет зависеть от того, как данные будут потребляться; вы пытаетесь получить распечатку, или лист обрабатывается другой программой?
Обновление 2
Если вы действительно склонны не использовать отдельный столбец кода, вы можете использовать технику комбинированного блока, как описано здесь частично:
http://www.contextures.com/xlDataVal10.html
Это было бы сложно. Вам нужно будет (a) получить поле со списком, когда пользователь выбирает одну из ячеек в столбце D, и (b) динамически настраивает элементы отображения окна. Он будет включать код VBA, и я не уверен на 100%. Это, безусловно, не стоит усилий.