Появилась новая проблемма.
Не могу справиться с новой формулой. Уже не знаю как её сократить.
Имеется таблица заказов. На листе1 вносим заказы, на листе2 формируется итоговый список заказов.
Суть в следующем: надо чтобы при вводе на листе 2 в ячейку например А2 названия заказа, чтоб в ячейке В2 формировался список всех товаров из заказа а так же проверка на заполненность дополнительных полей и, если доп поля заполнены, то чтоб вносились и они.
То есть для Заказа 1 в ячейку Лист2!В2 вносится "Доп. Поле 1 - 24", дальше идет проверка если Лист1!С21 заполнено, то вносится данные из ячеек листа1 В21 С21 D21 в таком вот формате "поле доп 2 - 1 шт", а если не заполнено то ничего не вносится, дальше снова проверка если Лист1!С21 заполнено, так же по аналогии с доп полем 2.
А дальше вносятся все строки из заказа с предвартельной заполненностью строки. Ну то есть если на листе1 в ячейке В3 есть данные то тогда сцепляем ячейки В3 С3 D3. им так для каждой из 16 строк.
Я написал формулу, но очень уж массивную, текст формулы приведен в файле на листе2.
Может кто то подскажет как её сократить до минимума или может макросом как то это делать?
Не могу справиться с новой формулой. Уже не знаю как её сократить.
Имеется таблица заказов. На листе1 вносим заказы, на листе2 формируется итоговый список заказов.
Суть в следующем: надо чтобы при вводе на листе 2 в ячейку например А2 названия заказа, чтоб в ячейке В2 формировался список всех товаров из заказа а так же проверка на заполненность дополнительных полей и, если доп поля заполнены, то чтоб вносились и они.
То есть для Заказа 1 в ячейку Лист2!В2 вносится "Доп. Поле 1 - 24", дальше идет проверка если Лист1!С21 заполнено, то вносится данные из ячеек листа1 В21 С21 D21 в таком вот формате "поле доп 2 - 1 шт", а если не заполнено то ничего не вносится, дальше снова проверка если Лист1!С21 заполнено, так же по аналогии с доп полем 2.
А дальше вносятся все строки из заказа с предвартельной заполненностью строки. Ну то есть если на листе1 в ячейке В3 есть данные то тогда сцепляем ячейки В3 С3 D3. им так для каждой из 16 строк.
Я написал формулу, но очень уж массивную, текст формулы приведен в файле на листе2.
Может кто то подскажет как её сократить до минимума или может макросом как то это делать?
Скрытый текст |
---|
=ЕСЛИ($A2="";"";СЦЕПИТЬ(ЕСЛИ(ИЛИ(ИНДЕКС(Лист1!B:C;ПОИСКПОЗ(A2;Лист1!B:B;0)+1;2)=1;ЕПУСТО(ИНДЕКС(Лист1!B:C;ПОИСКПОЗ(A2;Лист1!B:B;0)+1;2)=ИСТИНА))=ИСТИНА;"";СЦЕПИТЬ(ИНДЕКС(Лист1!B:C;ПОИСКПОЗ(A2;Лист1!B:B;0)+1;1);" ";ИНДЕКС(Лист1!B:C;ПОИСКПОЗ(A2;Лист1!B:B;0)+1;2)));ЕСЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:C;ПОИСКПОЗ(A2;Лист1!B:B;0)+1;2))=ИСТИНА;"";СЦЕПИТЬ(" ";Т!$AQ$2;" ";ОКРУГЛВНИЗ(ИНДЕКС(Лист1!B:E;ПОИСКПОЗ(A2;Лист1!B:B;0);4);0);Т!$AQ$3));ЕСЛИ(ЕПУСТО(ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)+2;2))=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)+2;1);" ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)+2;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)+2;3)));ЕСЛИ(ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)+4;2)="";"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)+4;1);" ";ОКРУГЛВВЕРХ(ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)+4;2);1)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-16))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-16)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-16)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-16);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-16;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-16;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-15))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-15)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-15)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-15);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-15;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-15;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-14))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-14)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-14)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-14);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-14;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-14;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-13))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-13)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-13)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-13);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-13;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-13;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-12))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-12)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-12)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-12);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-12;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-12;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-11))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-11)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-11)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-11);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-11;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-11;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-10))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-10)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-10)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-10);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-10;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-10;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-9))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-9)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-9)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-9);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-9;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-9;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)- 8) )=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)- 8) ="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)- 8) =0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)- 8) ;" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-8;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-8;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-7))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-7)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-7)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-7);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-7;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-7;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-6))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-6)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-6)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-6);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-6;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-6;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-5))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-5)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-5)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-5);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-5;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-5;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-4))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-4)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-4)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-4);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-4;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-4;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-3))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-3)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-3)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-3);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-3;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-3;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-2))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-2)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-2)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-2);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-2;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-2;3)));ЕСЛИ(ИЛИ(ЕПУСТО(ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-1))=ИСТИНА;ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-1)="";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-1)=0)=ИСТИНА;"";СЦЕПИТЬ(" ";ИНДЕКС(Лист1!B:B;ПОИСКПОЗ(A2;Лист1!B:B;0)-1);" - ";ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-1;2);ИНДЕКС(Лист1!B :D ;ПОИСКПОЗ(A2;Лист1!B:B;0)-1;3))))) |