Отримати вміст комірки з урахуванням номерів рядків і стовпців


96

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

Сол 1

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

Соль 2

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

Чи існує не менш багатослівний метод? (наприклад = CellValue (рядок, кольори) чи що інше)?

Редагування / уточнення: я просто хочу використовувати формули робочого аркуша Excel. Немає VBA. Коротше кажучи, я майже шукаю еквівалент методу VBA Cells () як формулу Excel.


Чи можемо ми отримати трохи більше контексту? Ви використовуєте лише формули Excel? VBA? Якийсь інший метод?
Saladin Akara

Відповіді:


141

Вам не потрібна частина ваших клітин CELL ():

=INDIRECT(ADDRESS(B1,B2))

або

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

обидва будуть працювати. Зверніть увагу, що обидва INDIRECTі OFFSETє мінливими функціями. Нестійкі функції можуть уповільнити обчислення, оскільки вони обчислюються при кожному перерахунку.


Це досить корисно, щоб я хотів, щоб його редагували, щоб мати потрібну кількість закриваючих дужок.
Вік,

6
Враховуючи популярність цього запитання / відповіді, було б чудово мати тут невелике речення про те, що таке летюча функція .
LondonRob

Зверніть увагу, що з другою формою, залежно від $ a $ 1, потрібно, щоб ви ніколи не переміщали $ a $ 1 у подальших редагуваннях аркуша.
Ерк

INDIRECT+ ADDRESS- це шлях. Excel моєю мовою перекладається OFFSETна 2 слова, розділені крапкою. Це найгірше (разом з умлаутами в назвах функцій)!
Bitterblue

29

Спробувати = індекс (масив, рядок, стовпець)

де: масив: виділіть весь аркуш рядок, стовпець: посилання на ваш рядок і стовпець

Це має бути легше зрозуміти тим, хто дивиться на формулу.


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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.