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

474
tzvi

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

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

Поля в Calculated выглядят примерно так:

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

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

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

Пока все это работает нормально. Я хотел бы сделать еще один шаг вперед: в предыдущем примере «Товары! G2» относится к столбцу цен для продукта в строке 2. Я хотел бы сделать формулу более читабельной, заменив ссылку на столбец «G» на именованную ссылка на столбец, а именно «ЦЕНА». Я сделал бы то же самое со ссылкой на Продукты! A2, вызвав столбец «PCAT» (категория, к которой относится продукт)

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

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

Я просто не могу заставить это работать. Я пробовал «Применить имена ...» безрезультатно, без изменений двоеточий и $ безрезультатно. Кто-нибудь делал это раньше?

-1
Вы предоставили хорошее объяснение настройки, но не ясно, в чем конкретно заключается проблема. Это просто заставляет работать имена (последний абзац), или есть проблема? fixer1234 10 лет назад 0
Проблема описана в последнем абзаце. Я отредактирую это, чтобы уточнить. tzvi 10 лет назад 0

1 ответ на вопрос

0
tzvi

I discovered that INDEX(PPRICE, 2) will return the value of the second row in the PPRICE column. The entire code snippet will look like this:

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

However it will be an absolute value, not a relative value and if you copy paste this formula to other rows it will still point to row 2. This would therefore not be a good idea for large data sets.