16:45 19.10.2011, IT happens
Лень, говорите, двигатель прогресса? Я ощутил это на собственном опыте.
Работаю логистом — привозим товары из далёкой Японии. Менеджер прислал список товаров, которые собирается заказать у производителя, с просьбой просчитать таможенные расходы. Всё бы ничего, но у него в экселевском списке две колонки: каталожный номер и закупочная цена. А для просчёта таможни нужны данные о весе, объёме и т. п.
На просьбу дать дополнительные данные менеджер выслал прайс производителя, в котором около пяти тысяч позиций, в перечне же порядка полутора тысяч строк. Прислать-то прислал, но сразу же свалил в отпуск — а дальше как знаете…
Что делать прикажете? Вручную искать позиции и копировать данные? Это ж дня три уйдёт! Берём Эксель, копируем на один лист полный прайс и перечень, оставив место под необходимые столбцы. А дальше логика такая:
1. Найти строку из массива с совпадающим каталожным номером.
2. Определить ячейку.
3. Составить в текстовом виде адрес ячейки с необходимым параметром.
4. Получить ссылку на ячейку.
5. Получить содержимое ячейки.
Эксель — чем не среда разработки?
Всё получилось замечательно. Только формулы я скрыл при отправке на просчёт декларанту, дабы не пугать. Не всякий спокойно воспримет следующее:
=CELL("CONTENTS";INDIRECT(ADDRESS((MATCH(B11;I11:I856)+ROW(I11:I856)-1);12)))