Excel 2010: как сослаться на определенное поле, используя определенное имя столбца и номер строки?

Excel 2010: как сослаться на определенное поле, используя определенное имя столбца и номер строки?

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

Я настроил три листа: Products, CategoryDefaults и Calculated. Столбцы — это детали продукта/категории, и каждый элемент/категория имеет свою собственную строку. Я также хотел бы использовать именованные столбцы как можно чаще для удобства чтения. Имя столбца, начинающееся с P, — это детали продукта, а начинающееся с D — из листа CategoryDefault.

Поля в разделе «Вычисляемые» выглядят примерно так:

=IF(Products!G2="",
INDEX(DPRICE, MATCH(Products!A2, DCAT, 0)),
Products!G2)

где DPRICE — именованный столбец для цен по умолчанию, а DCAT — имя категории для листа CategoryDefaults.

Формула означает следующее: Если номер продукта 2 столбца G пуст, то найдите значение столбца A продукта 2 на листе CategoryDefault и верните DefaultPrice. В противном случае верните заданную цену.

Пока все работает отлично. Я хотел бы сделать еще один шаг вперед: в предыдущем примере Products!G2 ссылается на столбец цен для продукта в строке 2. Я хотел бы сделать формулу более читаемой, заменив буквенную ссылку на столбец 'G' на именованную ссылку на столбец, а именно 'PPRICE'. Я бы сделал то же самое со ссылкой на Products!A2, назвав столбец 'PCAT' (категория, к которой принадлежит продукт)

Окончательная формула будет выглядеть примерно так:

=IF(Products!PPRICE:2="",
INDEX(DPRICE, MATCH(Products!PCAT:2, DCAT, 0)),
Products!PPRICE:2)

Я просто не могу заставить это работать. Я пробовал "Apply Names..." без результата и любые вариации двоеточий и $ безрезультатно. Кто-нибудь делал это раньше?

решение1

Я обнаружил, что это INDEX(PPRICE, 2)вернет значение второй строки в столбце PPRICE. Весь фрагмент кода будет выглядеть так:

=IF(INDEX(PPRICE, 2)="",
INDEX(DPRICE, MATCH(Products!A2, DCAT, 0)),
INDEX(PPRICE, 2))

Однако это будет абсолютное значение, а не относительное, и если вы скопируете и вставите эту формулу в другие строки, она все равно будет указывать на строку 2. Поэтому это не очень хорошая идея для больших наборов данных.

Связанный контент