Выбор определенного значения из списка через запятую можно выполнить с помощью функции CHOOSE
. Например:
=CHOOSE(A1,"A","B","C","D")
где A1 содержит значение индекса, а "A","B","C","D"
- список.
Однако CHOOSE
работает только с реальным списком, встроенным в функцию, а не с ссылкой на список.
Предположим, у вас есть ситуация, когда список является динамическим, и создается и хранится в ячейке. Скажем, прямо сейчас ячейка B1 содержит разделенную запятыми строку "A","B","C","D"
, и это может быть другой список в другое время.
Требование по-прежнему выбирать из этого списка на основе значения индекса в A1, то есть эквивалент псевдокода:
=CHOOSE(A1,CONTENTS(B1))
Есть ли способ сделать эквивалент этого?
- Я ищу общий подход. Список может быть любым и любым количеством терминов, что исключает решение, связанное с определенным количеством элементов, или элементов определенного типа или формата. Он должен обрабатывать общую ситуацию любого списка, соответствующего стандартам CSV. Однако список не будет настолько большим, чтобы превышать какие-либо ограничения Excel.
- Обратите внимание, что это отличается от действия функции INDIRECT, которая не будет работать для этой цели.
- Решение должно вести себя как функция (автоматически обновляться при изменении содержимого). Это исключает решение, требующее ручного вмешательства. Автоматически запускаемое решение VBA не будет исключено, если это единственно возможное решение, но оно нежелательно, поскольку VBA не всегда будет доступен и ограничит возможность переноса решения в другие приложения для работы с электронными таблицами.
- Использование вспомогательного столбца не исключается, но переменная природа данных делает его непрактичным для решения, которое включает в себя анализ списка в отдельные ячейки.