Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выборка данных по условию из таблиц разных конфигураций - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Выборка данных по условию из таблиц разных конфигураций
muusica Дата: Вторник, 08.04.2025, 18:01 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

про плюс 2021
Добрый вечер. Я тут новенький и постараюсь кратко и по делу. Есть две таблицы в разных листах (но это не важно). Таблица справа - распределение продукции по заявкам. Проблема в том, что распределять продукцию удобно именно по столбикам, где слева стоят цифры веса, а справа номер заявки куда этот вес распределяется. Таким образом одна партия может быть распределена по разным заявкам. И, соответственно, одна заявка может быть набрана из разных партий продукции.

В таблице слева я пытаюсь вытащить информацию номер партии и вес, согласно заявке - как критерию отбора. Предполагал, что соберу какую-нибудь формулу работы с массивом или типа того, буду вбивать номер заявки в таблицу, протягивать вниз до появления нуля или н/д. Вписывать следующий номер заявки и т.д. Далее с весом будут другие манипуляции уже в этой табличке.

Когда вытаскивал из похожей таблички данные пользовался формулами ЕСЛИОШИБКА ИНДЕКС НАИМЕНЬШИЙ ЕСЛИ СТРОКА и т.д. Но там обе таблицы были схожи, а здесь конфигурации разные. Не понимаю как искать в одной строке по разным столбцам, где критерии чередуются с данными (слева данные, справа критерий поиска и отбора).

Надеюсь на вашу благосклонность и отзывчивость. Пока ничего не получается.
К сообщению приложен файл: daniil.xlsx (15.7 Kb)


Даниил
 
Ответить
СообщениеДобрый вечер. Я тут новенький и постараюсь кратко и по делу. Есть две таблицы в разных листах (но это не важно). Таблица справа - распределение продукции по заявкам. Проблема в том, что распределять продукцию удобно именно по столбикам, где слева стоят цифры веса, а справа номер заявки куда этот вес распределяется. Таким образом одна партия может быть распределена по разным заявкам. И, соответственно, одна заявка может быть набрана из разных партий продукции.

В таблице слева я пытаюсь вытащить информацию номер партии и вес, согласно заявке - как критерию отбора. Предполагал, что соберу какую-нибудь формулу работы с массивом или типа того, буду вбивать номер заявки в таблицу, протягивать вниз до появления нуля или н/д. Вписывать следующий номер заявки и т.д. Далее с весом будут другие манипуляции уже в этой табличке.

Когда вытаскивал из похожей таблички данные пользовался формулами ЕСЛИОШИБКА ИНДЕКС НАИМЕНЬШИЙ ЕСЛИ СТРОКА и т.д. Но там обе таблицы были схожи, а здесь конфигурации разные. Не понимаю как искать в одной строке по разным столбцам, где критерии чередуются с данными (слева данные, справа критерий поиска и отбора).

Надеюсь на вашу благосклонность и отзывчивость. Пока ничего не получается.

Автор - muusica
Дата добавления - 08.04.2025 в 18:01
прохожий2019 Дата: Вторник, 08.04.2025, 20:04 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1383
Репутация: 358 ±
Замечаний: 0% ±

365 Beta Channel
я бы такую структуру парсил через pq и не размножал себе мозг - см файл

ну или 365 формулу соорудить:
Код
=LET(
n;ЧИСЛСТОЛБ(Таблица1[#Заголовки])-1;
t;ВЫБОРСТОЛБЦ(REDUCE({"партия";"вес";"заявка"};Таблица1[№ партии];LAMBDA(s;c;ВСТОЛБИК(s;ГСТОЛБИК(РАЗВЕРНУТЬ(c;n/2;1;c);СВЕРНСТРОК(СМЕЩ(c;;1;1;n);2)))));1;3;2);
f;ФИЛЬТР(t;ИНДЕКС(t;;2)<>0);
ГРУПППО(ВЗЯТЬ(f;;2);ВЗЯТЬ(f;;-1);СУММ;3;0))

оно же просто как функция от таблицы:
Код
=LET(a;Таблица1;
n;(ЧИСЛСТОЛБ(a)-1)/2;
v;REDUCE({"партия";"вес";"заявка"};
ПОСЛЕД(ЧСТРОК(a));
LAMBDA(s;c;
LET(r;ВЫБОРСТРОК(a;c);
q;ИНДЕКС(r;1);
ВСТОЛБИК(s;ГСТОЛБИК(РАЗВЕРНУТЬ(q;n;1;q);СВЕРНСТРОК(СБРОСИТЬ(r;;1);2))))));
f;ФИЛЬТР(v;ИНДЕКС(v;;2)<>0);
ГРУПППО(ВЫБОРСТОЛБЦ(f;1;3);ИНДЕКС(f;;2);СУММ;3;0))

С классическими индексами возиться, конечно, тоже можно, но у вас переменное количество партий на заявку - будет тяжеловесно, да и лень, при наличии более-менее адекватных средств (хотя "удобная" структура - ну такое)

upd. перезалил файл - в мобильной версии ещё требуется развернуто писать:
Код
=LET(a;Таблица1;
n;(ЧИСЛСТОЛБ(a)-1)/2;
v;REDUCE({"партия";"вес";"заявка"};
ПОСЛЕД(ЧСТРОК(a));
LAMBDA(s;c;
LET(r;ВЫБОРСТРОК(a;c);
q;ИНДЕКС(r;1);
ВСТОЛБИК(s;ГСТОЛБИК(РАЗВЕРНУТЬ(q;n;1;q);СВЕРНСТРОК(СБРОСИТЬ(r;;1);2))))));
f;ФИЛЬТР(v;ИНДЕКС(v;;2)<>0);
ГРУПППО(ВЫБОРСТОЛБЦ(f;1;3);ИНДЕКС(f;;2);LAMBDA(x;СУММ(x));3;0))
К сообщению приложен файл: 2362042.xlsx (32.9 Kb)


Сообщение отредактировал прохожий2019 - Среда, 09.04.2025, 07:10
 
Ответить
Сообщениея бы такую структуру парсил через pq и не размножал себе мозг - см файл

ну или 365 формулу соорудить:
Код
=LET(
n;ЧИСЛСТОЛБ(Таблица1[#Заголовки])-1;
t;ВЫБОРСТОЛБЦ(REDUCE({"партия";"вес";"заявка"};Таблица1[№ партии];LAMBDA(s;c;ВСТОЛБИК(s;ГСТОЛБИК(РАЗВЕРНУТЬ(c;n/2;1;c);СВЕРНСТРОК(СМЕЩ(c;;1;1;n);2)))));1;3;2);
f;ФИЛЬТР(t;ИНДЕКС(t;;2)<>0);
ГРУПППО(ВЗЯТЬ(f;;2);ВЗЯТЬ(f;;-1);СУММ;3;0))

оно же просто как функция от таблицы:
Код
=LET(a;Таблица1;
n;(ЧИСЛСТОЛБ(a)-1)/2;
v;REDUCE({"партия";"вес";"заявка"};
ПОСЛЕД(ЧСТРОК(a));
LAMBDA(s;c;
LET(r;ВЫБОРСТРОК(a;c);
q;ИНДЕКС(r;1);
ВСТОЛБИК(s;ГСТОЛБИК(РАЗВЕРНУТЬ(q;n;1;q);СВЕРНСТРОК(СБРОСИТЬ(r;;1);2))))));
f;ФИЛЬТР(v;ИНДЕКС(v;;2)<>0);
ГРУПППО(ВЫБОРСТОЛБЦ(f;1;3);ИНДЕКС(f;;2);СУММ;3;0))

С классическими индексами возиться, конечно, тоже можно, но у вас переменное количество партий на заявку - будет тяжеловесно, да и лень, при наличии более-менее адекватных средств (хотя "удобная" структура - ну такое)

upd. перезалил файл - в мобильной версии ещё требуется развернуто писать:
Код
=LET(a;Таблица1;
n;(ЧИСЛСТОЛБ(a)-1)/2;
v;REDUCE({"партия";"вес";"заявка"};
ПОСЛЕД(ЧСТРОК(a));
LAMBDA(s;c;
LET(r;ВЫБОРСТРОК(a;c);
q;ИНДЕКС(r;1);
ВСТОЛБИК(s;ГСТОЛБИК(РАЗВЕРНУТЬ(q;n;1;q);СВЕРНСТРОК(СБРОСИТЬ(r;;1);2))))));
f;ФИЛЬТР(v;ИНДЕКС(v;;2)<>0);
ГРУПППО(ВЫБОРСТОЛБЦ(f;1;3);ИНДЕКС(f;;2);LAMBDA(x;СУММ(x));3;0))

Автор - прохожий2019
Дата добавления - 08.04.2025 в 20:04
Hugo Дата: Вторник, 08.04.2025, 23:55 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3849
Репутация: 812 ±
Замечаний: 0% ±

365
Для старых версий можно несложную UDF написать с двумя аргументами как источник, и можно два как критерий - заявка и индекс повтора, будет для той таблички слева вверху.
Ну если нужно конечно.
К сообщению приложен файл: daniil3_udf.xlsm (31.7 Kb)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Среда, 09.04.2025, 00:32
 
Ответить
СообщениеДля старых версий можно несложную UDF написать с двумя аргументами как источник, и можно два как критерий - заявка и индекс повтора, будет для той таблички слева вверху.
Ну если нужно конечно.

Автор - Hugo
Дата добавления - 08.04.2025 в 23:55
muusica Дата: Среда, 09.04.2025, 12:42 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

про плюс 2021
прохожий2019, огромное спасибо за помощь и потраченное время. Буду изучать. А что до "удобная форма" - то тут увы такая специфика распределения прорукции, что именно в таком виде визуально удобнее всего делать. Может потом придумаю получше что-нибудь. Пока так :( Ещё раз, огромное спасибо!!!


Даниил
 
Ответить
Сообщениепрохожий2019, огромное спасибо за помощь и потраченное время. Буду изучать. А что до "удобная форма" - то тут увы такая специфика распределения прорукции, что именно в таком виде визуально удобнее всего делать. Может потом придумаю получше что-нибудь. Пока так :( Ещё раз, огромное спасибо!!!

Автор - muusica
Дата добавления - 09.04.2025 в 12:42
muusica Дата: Среда, 09.04.2025, 12:43 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

про плюс 2021
Hugo, Большое спасибо. Буду изучать. Так глубоко пока не лазил, но видимо придётся рано или поздно.


Даниил
 
Ответить
СообщениеHugo, Большое спасибо. Буду изучать. Так глубоко пока не лазил, но видимо придётся рано или поздно.

Автор - muusica
Дата добавления - 09.04.2025 в 12:43
Hugo Дата: Среда, 09.04.2025, 17:40 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3849
Репутация: 812 ±
Замечаний: 0% ±

365
muusica, там в принципе можно все исходные данные в один аргумент запихнуть, но так на два чуть универсальнее.
Вводить на лсте формулу нужно сразу в две соседние ячейки, в старых как формулу массива (где нет динамических).
И затем можно протянуть вниз по столбцам, сразу две ячейки.
И использовать как написали - вводим номер заявки в таблицу - если правее уже пусто то значит можно менять номер на следующий.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщениеmuusica, там в принципе можно все исходные данные в один аргумент запихнуть, но так на два чуть универсальнее.
Вводить на лсте формулу нужно сразу в две соседние ячейки, в старых как формулу массива (где нет динамических).
И затем можно протянуть вниз по столбцам, сразу две ячейки.
И использовать как написали - вводим номер заявки в таблицу - если правее уже пусто то значит можно менять номер на следующий.

Автор - Hugo
Дата добавления - 09.04.2025 в 17:40
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!