![Excel 2010: как сослаться на определенное поле, используя определенное имя столбца и номер строки?](https://rvso.com/image/1428721/Excel%202010%3A%20%D0%BA%D0%B0%D0%BA%20%D1%81%D0%BE%D1%81%D0%BB%D0%B0%D1%82%D1%8C%D1%81%D1%8F%20%D0%BD%D0%B0%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D0%BF%D0%BE%D0%BB%D0%B5%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D0%B8%D0%BC%D1%8F%20%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0%20%D0%B8%20%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%3F.png)
Я использую 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. Поэтому это не очень хорошая идея для больших наборов данных.