Я создаю электронную таблицу для расчета стоимости крафта в игре для определения коэффициентов прибыли. В моей электронной таблице есть раздел, в котором я хотел бы иметь два выпадающих списка. В первом я хотел бы выбрать заголовок столбца таблицы, а во втором я хотел бы выбрать заголовок строки таблицы. В третьей ячейке я хотел бы использовать значение в ячейке, расположенной на этом пересечении в формуле. Я уверен, что должен быть способ сделать это, но я не нашел ничего похожего на Google. Все учебники по зависимостям раскрывающегося списка, которые я нашел, используют разные методы, которые не подходят для моей ситуации. Спасибо большое.
1 ответ
Хорошо, не прибегая к сценариям VBA, вам придется создать две маленькие таблицы, по два столбца в каждом, первый столбец будет индексом, а второй - заголовком строки / столбца.
Итак, давайте предположим, что ваша исходная таблица имеет 5 строк и 3 столбца с простыми заголовками, такими как Row1, Row2, Row3, Row4, Row5 и Col1, Col2, Col3. И эта таблица начинается с A1
, поэтому фактические значения начинаются с B2
и спускаются до D6
.
- В новом столбце введите числовой индекс строк, то есть 1, 2, 3, 4, 5
- В столбце справа введите названия строк
- Повторите вышеуказанные шаги для столбцов
Итак, у вас будет что-то вроде этого:
Далее на вкладке «Разработчик» на ленте нажмите « Insert
> « Combo Box (ActiveX Control)
. Сделайте два поля со списком, где вы хотите, чтобы ваши выпадающие списки были.
Если вы находитесь не в режиме разработки, нажмите кнопку «Режим разработки».
- Щелкните правой кнопкой мыши первое поле со списком и выберите Свойства.
- В поле
ColumnCount
введите 2 - В поле
ColumnWidths
введите 0 - В поле
LinkedCell
введите значение ячейки вне экрана, например,Y1
- В поле
ListFillRange
введите диапазон, который охватывает индекс строки и столбцы заголовка строки, используя мое изображение выше в качестве примера, я бы ввелM1:N5
- Повторите вышеупомянутые пять шагов для второго поля со списком для столбцов (чтобы продолжить пример, значение шага 4 может быть в
Z1
- Теперь мы можем получить необходимое пересечение по следующей формуле:
=INDEX(B2:D6,Y1,Z1)
В основном, через значение LinkedCell
со списком, индексы строк и столбцов заполняются в Y1
и Z1
соответственно. Оттуда мы используем функцию Index
чтобы получить значение для этих смещений строк и столбцов в таблице B2:D6
.
Примечание. Для строк можно добавить столбец справа от существующих заголовков строк и ввести индексы строк (и скрыть столбец). Но для столбцов необходимо создать новую таблицу, поскольку поле ListFillRange
поля со списком не принимает горизонтальные массивы. (Ну, это так, но не для той цели, в которой мы нуждаемся.)