Получить содержимое ячейки по номерам строк и столбцов

96

Я хочу получить содержимое ячейки с учетом номера строки и столбца. Номер строки и столбца хранятся в ячейках (здесь B1, B2). Я знаю, что следующие решения работают, но они кажутся немного взломанными.

Соль 1

=CELL("contents",INDIRECT(ADDRESS(B1,B2)))

Соль 2

=CELL("contents",OFFSET($A$1, B1-1,B2-1))

Нет ли менее подробного метода? (например, = CellValue (row, col) или что-то еще)?

Редактировать / Уточнение: я просто хочу использовать формулы рабочего листа Excel. Нет VBA. Короче говоря, я в значительной степени ищу эквивалент метода VBA Cells () в виде формулы Excel.

Филипп
источник
Можем ли мы получить немного больше контекста? Вы используете только формулы Excel? VBA? Другой метод?
Саладин Акара

Ответы:

141

Вам не нужна часть CELL () в ваших формулах:

=INDIRECT(ADDRESS(B1,B2))

или

=OFFSET($A$1, B1-1,B2-1)

оба будут работать. Обратите внимание, что обе функции INDIRECTи OFFSETявляются непостоянными. Неустойчивые функции могут замедлить вычисления, поскольку они вычисляются при каждом пересчете.

Чарльз Уильямс
источник
Это достаточно полезно, чтобы я хотел, чтобы в нем было нужное количество закрывающих скобок.
Wyck
6
Учитывая популярность этого вопроса / ответа, было бы здорово иметь здесь небольшое предложение о том, что такое изменчивая функция .
LondonRob
Обратите внимание, что для второй формы, в зависимости от $ a $ 1, требуется, чтобы вы никоим образом не перемещали $ a $ 1 при последующем редактировании листа.
Erk
INDIRECT+ ADDRESS- лучший способ. Excel на моем языке переводится OFFSETдвумя словами, разделенными точкой. Это худшее (вместе с умляутами в именах функций)!
Bitterblue
29

Попробуйте = index (ARRAY, ROW, COLUMN)

где: Массив: выберите весь лист Строка, Столбец: Ссылки на строку и столбец

Это должно быть легче понять тем, кто смотрит на формулу.

Альберт Шенко
источник
2

Это заняло у меня время, но вот как я сделал его динамичным. Это не зависит от отсортированной таблицы.

Сначала я начал с столбца названий штатов (столбец A) и столбца самолетов в каждом штате (столбец B). (Строка 1 - строка заголовка).

Поиск ячейки, содержащей номер самолета, был:

=MATCH(MAX($B$2:$B$54),$B$2:$B$54,0)+MIN(ROW($B$2:$B$54))-1

Я поместил это в ячейку, а затем дал этой ячейке имя "StateRow". Затем, используя подсказки сверху, я получил следующее:

=INDIRECT(ADDRESS(StateRow,1))

Это возвращает имя состояния из динамического значения в строке StateRow, столбец 1.

Теперь, когда значения в столбце счетчика меняются со временем по мере ввода большего количества данных, я всегда знаю, в каком штате больше всего самолетов.

user3573562
источник