Страницы: 1 2 След.
RSS
Выбор значений в матрице данных по строкам с заданной последовательностью строк поиска
 
По заданной в колонке последовательности  и соответствующему значению найти в соответствующей строке матрицы (массива) значение равное или ближайшее большее заданному и вывести его в указанный интервал
Предложите, пожалуйста, способ поиска нужных параметров ГОСТ для имеющихся и всегда меняющихся исходных данных. Таблица ГОСТ очень длинная. Ее можно и транспонировать. Пример взят на интервале нужных параметров. Исходных данных (номер признака) может быть много и у всех свой приоритете при использовании. Т.е. вначале выбирается основное требование ГОСТ , потом под него подбираются остальные нек меньшие исходным.
Возможно ли рассчитывать параметры используя функции EXCEL? Пример и последовательность решения в файле
 
Вариант формулами.
 
вариант:
=ИНДЕКС(E8:K12;;ПОИСКПОЗ(МИН(МУМНОЖ(ТРАНСП(C8:C12)^0;ABS(E8:K12-D8:D12)*10^(6-C8:C12*2)));МУМНОЖ(ТРАНСП(C8:C12)^0;ABS(E8:K12-D8:D12)*10^(6-C8:C12*2)); ))
 
Вариант можно применить и на 1000 строк. Вполне будет уместно процитировать классику "Приложите файл(ы) с примером ... что есть сейчас и того, что хотелось бы на выходе."
 
Цитата
написал:
"Приложите файл(ы) с примером ... что есть сейчас и того, что хотелось бы на выходе."
Так в файле все и написано и зеленым цветом выделен столбец для результата. А пошагово расписан сам процесс. Нужна была формула в результат. Николай прислал формулу, я подставила, все прекрасно.
Теперь столкнулась с тем, что в другом файле данные уже в строках и применить формулу не удается. При изменении ссылок на массив выходит сообщение - не трогайте массив (нельзя изменять положение массива) :-) К сообщениям прикрепить файл нет возможности, так как отсутствует иконка Прикрепить файл. Пока писала вам текст появилась иконка со скрепкой. Не понятно в каких случаях она появляется и что для этого нужно сделать. Постаралась по другому оформить файл. Вначале написала вариант предыдущей версии, предложенный Павлом W
Изменено: KatrinM - 08.04.2025 12:09:04
 
Что-то новый дизайн вообще не похоже на первый вариант. А где столбец "Последовательность выбора признака в ГОСТ"? В первом варианте от него зависел весь расчёт.
 
Цитата
написал:
А где столбец "Последовательность выбора признака в ГОСТ"?
Цитата
написал:
А где столбец "Последовательность выбора признака в ГОСТ"?
Так ниже идет таблица. В общем виде, а не в частном это не столбец, а матрица. Для каждого изделия свой приоритет признака в ГОСТ. Например у мебели кому-то важно мягкое сиденье, а кому-то прозрачность стекла. Я думала, что можно будет скопировать по одной колонке и применить ко всем. Но этого не получается, так как массив не дает себя изменять и переносить и копировать в другие места даже при аналогичных массивах. Ну и к тому же размер массива  - это не маленький фрагмент, а я уже подписала какой  он. Рассчитала сколько позиций в ГОСТ и сколько классов изделий. Их два класса и по каждому огромная таблица ГОСТов. Я все не набирала, многоточие поставила.
Нужна общая формула. Частный случай не подходит.
 
Цитата
написал:
=)
Павел, сделала новый файл - в общем виде задача. Частный случай прекрасен, но как я поняла не подходит. Не протянешь и не раскопируешь по всей матрице. Помогите с формулой - как выбрать нужное значение из ГОСТ по его приоритетности, с учетом, что никоторые позиции равны нулю, т.е. их нет. У некоторых изделий этих измерений нет и следовательно, нет и приоритета. Т.е. в матрице приоритетов по изделиям нет значений. В матрице ГОСТа все значения есть. Нулевых нет.
 
KatrinM, формулу предложенную мной переформатировал для  "Постаралась по другому оформить файл" см файл
но я не сообщил, что у данного решения есть нюансы (приоритет не более пяти и ограничения к размерности чисел в "ГОСТах")
...потом, если данных "огромная таблица" - лучше не формулами это решать )  
 
Цитата
написал:
если данных "огромная таблица" - лучше не формулами это решать
Спасибо Павел. Я так поняла, что мне лучше блоками это оформлять. Вначале выбирать по признакам нужный блок ГОСТА, он ограничит пространство поиска. Приоритетов у каджой детали и так не больше 5, скорее всего (все не проверяла). После этих процедур применять уже предложенные формулы. Попробую. Пока не прощаюсь.
 
Цитата
написал:
есть нюансы
Добрый день Павел. Формула не совсем отображает правильно результат. Наверно я не совсем доходчиво объяснила. Попытаюсь текстом, может так будет понятнее и вы сможете поправить формулу.
1. Есть изделие под номером 1, оно относится к классу задач 1, у этого изделия есть измерения (из разных возможных измерений от 1 до 118) под номерами 1, 13, 16, 18 и 19. В ГОСТ нужно найти соответствия этим параметрам в соответствующем классе задач, но при условии, что признак под номером 1 имеет приоритет 1, т.е. его мы ищем самым первым в ГОСТ. Значение этого признака под номером 1 равно 122, соответственно в ГОСТ все признаки по номеру 1 не равные 122 отметаются. Выбор начинается из массива где признак под номером 1 равен 122 или ближайшее большее, так как он в приоритете первый. Такое значение в таблице госту этого признака есть и их много. Программа выбирает из огромного массива только тот у которого признак под номером 1 имеет значение 122 или ближайшее большее в классе задач с номером 1.
2. Далее из уже ограниченного набора данных подбираем второй приоритет значимости и это по матрице приоритета признак с номером 16. Т.е теперь в таблице ГОСТ из массива с признаком 1 равным 122 выбираем второй признак с номером 16, так, что бы он был равен или ближайший больший к исходному. Исходный равен 72. Ищем в таблице ближайшее большее или равное 72. Это значение есть и оно равно 72. У нас при этом все еще остается несколько вариантов таких наборов в ГОСТ. В данном случае их осталось два.
3. Далее идет признак с приоритетом 3 (третий по значимости признак) с номером 19. Из оставшихся двух строк таблицы ГОСТ выбираем равное или ближайшее большее к исходному значению 65,6. Это значение в таблице ГОСТ равно 78,5.
4. В данном случае уже остается один вектор выбора в таблице ГОСТ. Смотрим приоритет под номером 4 - это номер признака 13. В оставшемся уже ограниченном выборе ему присваивается значение, которое осталось и оно равно 29,3 (исходное было 27).
5. Последний признак под номером 18 , чаще всего уже ограничен выбором всех предыдущих, поэтому ему присваивается значение которое осталось в этом векторе. И оно равно 63  (исходное 54).
В этой задаче еще есть признак "Класс задачи" их всего два. Они позволяют ограничить матрицу ГОСТ сразу наполовину и ускорить расчет. С него можно и начинать отбор в условиях функции.
Еще один момент, что признаки приоритетности, хоть их и для каждого изделия не больше 5 (как вы писали), но в матрице они стоят не в 5 колонках подряд. Например у изделия номер 2 в колонке признака под номером 13 стоит 0 (ноль), т.е. этот признак вообще не используется в этом изделии. В этом случае формула не должна сбоить. Она должна присвоить этим признакам исходное значение, а для поиска в ГОСТ взять признаки с ненулевыми приоритетами, а они могут в таблице быть размещены по всей строке в разных местах. Именно по ненулевым приоритетам выбирается требование ГОСТ. Остальные признаки остаются как исходные.
Ну, вот, кажется объяснила смысл. Буду ждать помощи  
Изменено: KatrinM - 10.04.2025 10:20:17
 
Цитата
...не совсем отображает правильно результат... Попытаюсь текстом... 1... 2....
Ну, вот, кажется объяснила смысл
)   KatrinM, вы лучше в файле покажите что не так и почему
...а то что я понял не расходится с тем что сейчас прочитал )
 
Цитата
написал:
вы лучше в файле покажите
Хорошо.
Результат не верный.
8623,4484552,8
Для исходного вектора
12227725465,6
с учетом приоритета выбора
14253
результат должен быть
12229,3726378,5
Для исходного вектора
11627645167,3
результатом должно быть
11627645468,5
так как приоритет у измерений
10032
поэтому второе и третье измерение в векторе остаются исходными
к ним ГОСТ не применяется
Изменено: KatrinM - 10.04.2025 14:48:42
 
Цитата
Прикрепленные файлы
это не тот файл KatrinM, есть подозрения что последний мой файл  вы не качали
...в нём можно менять значения для "Класс задачи (1;2)" и  "Класс изделий (от 1 до 1000)"
Цитата
116 27,8 64 54 68,5
116 27,6 60 54 67,3   точнее   (строка 68 или 18 в ГОСТе)  

и в новых версиях формула будет и короче и ФИЛЬТР() можно применить чтоб
Цитата
он ограничит пространство поиска
или вообще многоступенчато им всё решить  
 
Цитата
написал:
это не тот файл
Доброго дня!
От вас было 2 файла: "Поиск и выбор по условию_" и "Постановка задачи_"
В первом файле все классно считается, но формула не работает если приоритет признака нулевой (т.е. показатель нужно проигнорировать, а поиск в ГОСТ осуществлять только не нулевым приоритетам.
Во втором файле формула действительно короткая, но результат не тот.
Я смотрю результат в строках 35 и 36 , выделено коралловым цветом.
Формула:   =ЕСЛИОШИБКА(ГПР(D$29;$D$50:$O$115;$P35+1;);"")
Класс задач задействован в формуле.
Эта формула для исходного значения 122 дает результат 86
Но деталь с мерками меньше исходных и не соответствующая ГОСТ- это брак.
И я тогда не пойму - либо результат не там нужно смотреть, либо файла нет.
Посмотрите последний файл в переписке. Может вы не тот прикрепили?
Жду помощи.
Спасибо за понимание и участие в моей проблеме.  
 
Цитата
написал:
(строка 68 или 18 в ГОСТе)
Еще добавлю пояснение.
По второму варианту изделия формула вроде правильно все определила.
Взяла вначале 116, потом по второму приоритету выбрала из всех 116 нужное значение равное 67,3.
Потом перешла к третьему приоритету - по нему исходное было 51, в выбранной строке оно равно 54.
Все правильно. Теперь осталось нулевые приоритеты проставить правильно.
Не из строки ГОСТ, а исходные. Т.е. значения по нулевым приоритетам сразу присваиваются исходные.
Тогда результат должен быть:  116   27   64   54   67,3
В данном случае нужно сразу по нулевым ставить исходник и ничего не искать.
Но вот с первым изделием полное непонимание.
Формула уходит совершенно в другой интервал.
Нужно начинать со 122, а она пишет 86.
Вот и не понятно тогда как она ищет значение? По какому признаку?
 
Цитата
Во втором файле формула действительно короткая
)  тяжёлая артилерия основная формула в P35  (чтоб каждый раз не искать нужную строку) - массивный ввод в ячейке
Цитата
значения по нулевым приоритетам сразу присваиваются исходные
этого доп условия выше не видел
Могли бы и сами что-нибудь подобное (в D35):
=ЕСЛИОШИБКА(ЕСЛИ(ГПР(D$29;$D$41:$O$46;$C35+1;);ГПР(D$29;$D$50:$O$115;$P35+1;);ГПР(D$29;$D$29:$O$33;$C35+2;));"")
Цитата
Но вот с первым изделием полное непонимание.
еще раз
Цитата
Я:  ...можно менять значения для "Класс задачи (1;2)...
KatrinM,  какое значение вы видите в ячейке B35 ?
 
Цитата
написал:
какое значение вы видите в ячейке B35 ?
1 - класс задачи 1
для него в таблицу ГОСТ всего три строки, так как я его полностью еще не перевела нормально в ЕХЛ из ПДА, там кривые сканы, нужно руками.
НО!  там есть строка на которую формула должна была сесть.
120639,8847598,1
Я понимаю, что 122 нет, но ближайшее большее 206
Добавила в пустую строку для проверки значения
12229,3726378,5
Почему функция взяла не 206 , как большее?
Изменено: KatrinM - 11.04.2025 12:19:02
 
Цитата
написал:
Могли бы и сами что-нибудь подобное (в D35)
Ну, спасибо, конечно, за такую высокую оценку моих интеллектуальных способностей, но я формулу из ячейки Р35 разбирала как пирамиду.
И наконец то вроде получилось понять и применить в другой примерной задаче.
Это еще я уже составленную функцию изучала, а когда сама их пишу больше трех вложенностей не могу осилить. Запутываюсь. Хорошо, что есть вы.
У меня это не основной вид деятельности. Просто пытаюсь оптимизировать процесс поиска для расчетов.
Начну применение предложенного.
Если не получится то нулевые признаки приоритета пока буду заменять руками.
Форум не закрываем. Так как работаю над этим во внерабочее время.
На работе сосредоточиться не получается.
Спасибо вам Павел.
Почему же функция взяла к 122  не большее 206 , а меньшее 86? Ведь у 206 тоже класс задачи 1
Не прощаюсь  :D  
Изменено: KatrinM - 11.04.2025 12:19:40
 
Цитата
написал:
Почему же функция
Павел, прошу вас помогите понять почему функция первые две строчки правильно выбирает значения в ГОСТ, а далее не соответствует выбору.
Добавила ГОСТ и варианты  замеров, что бы проверить на разных классах задач и разных изделиях.
Как то на другой класс приоритета не очень правильно переходит.
Бьюсь с формулой, но видимо не хватает знаний.
Буду ждать помощи.
Изменено: KatrinM - 12.04.2025 18:03:53
 
Цитата
KatrinM,  ...равен или ближайший больший к исходному...
Почему же функция взяла к 122  не большее 206 , а меньшее 86?
выделили цветом сразу понятнее стало )  ...нет вы позже это добавили
собственно, я применял методику поиска ближайшего к искомому или сверху, или снизу. Сейчас вижу что надо сверху
Тогда такой вопрос:
Находится наименьшее из больших поприоритетно только одно значение или ищется таки наиболее подходящая строка под все приоритеты?
Т.е. в первом случае возможна ситуация когда на каком то этапе больших чисел не окажется для какого-нибудь приоритета
Во втором случае - будет браться следующее наибольшее, если в нижних приоритетах #Н/Д
 
Цитата
написал:
Находится наименьшее из больших поприоритетно только одно значение
Ищется одно наибольшее ближнее значение из имеющихся (т.е. наименьшее из больших). Если нет такого то "нет данных".
Я добавила значений и в размеры и в ГОСТ, что бы была возможность оттестировать функцию. И выделила цветом, что бы не путать. Номер изделия в данном случае стоит просто для последовательности. Он не участвует в выборе функции.
Я во всех письмах пишу "наибольшее ближайшее", поэтому и вопрос был про 86, когда функция его подбирала к 122. Например если у вас втулка 122 мм, то 86 не нужна. В ней не будет смысла. Из большей сделать меньше можно дальнейшей обработкой. Но расход материала будет рассчитываться по ГОСТ. Просто таблицу ГОСТ я еще не всю перевела в ЕХЛ. Я писала об этом. Конвертация программным обеспечением из PDF не совсем получается корректно. Сейчас этим занимаюсь.
Спасибо, что не бросаете меня :-)  
Изменено: KatrinM - 14.04.2025 05:15:10
 
KatrinM, по тестируйте пока этот вариант:
Цитата
Во втором случае - будет браться следующее наибольшее, если в нижних приоритетах #Н/Д
первый - рассмотрю чуть позже ...он посложнее будет  )
 
Цитата
написал:
первый - рассмотрю чуть позже ...он посложнее будет  )
Павел, спасибо!!!!!!!
Подставила формулу и все получилось. Пока не увидела проблемы.
На счет первого и второго случая не совсем поняла.
Сейчас рассчитываются значения для обоих классов задач.
Только не совсем понятно зачем выделять сразу весь массив по всем изделиям? Ведь изделий за несколько лет будет миллион, так и таскать все уже не нужные заказы в массиве? Может брать по условию нужное изделие? Я правда не знаю как.
Все ночи мудрю с этими формулами.
Но главное - задача считается сейчас и можно продолжать дальнейшие манипуляции.
Если у вас появится другой вариант, буду очень благодарна вам.
Изменено: KatrinM - 16.04.2025 08:35:59
 
Цитата
Только не совсем понятно зачем выделять сразу весь массив
а мне было не понятно, что это за данные и как вы их "тяните"
исходя из сказанного выше, то это малость проще, т.е. можно ссылаться непосредственно на эти данные (один ГПР можно убрать)
Цитата
Подставила формулу и все получилось. Пока не увидела проблемы.
На счет первого и второго случая не совсем поняла.
KatrinM, выберите в C37  "2"   ...и посмотрите результат
Отличие в том, что это решение не ограничивается одним наименьшим
для
Цитата
Ищется одно наибольшее ближнее значение из имеющихся
задача "рекурсивна" решением. Для небольшого количества "приоритетов" еще можно все упаковать в одну формулу и чем их больше, тем длиньше формула (для пяти  уже будет та еще матрешка).
Не стал упрессовывать в одну формулу, да и не стоит этого делать (чтоб не вычислять одно и то же по многу раз)  см файл Лист1 (3)
Но мне интересней было решить д.массивом (2021+):
=LET(_г;ФИЛЬТР(D$61:O$137;C$61:C$137=B37);_д;D31:O31;_п;ИНДЕКС(D$52:O$56;C37;);м_;ПОСЛЕД(;МАКС(_п));с_;ИНДЕКС(СОРТ(ЕСЛИ((_г>=_д)*(_п>0)+(_п=0);_г);ПОИСКПОЗ(м_;_п;);м_^0);1;);ЕСЛИ(ЕНД(ПОИСКПОЗ(0=1;с_;));ЕСЛИ(_п;с_;_д);"не найдено"))
см файл Лист1 (4)
...эту логику, думаю, можно применить и в Power Query...
 
Цитата
написал:
Но мне интересней было решить д.массивом (2021+):
Павел, спасибо за оперативную помощь!
В листе Лист1(4) все красиво, но я ничего не поняла. Видимо это не мой уровень знаний.
В Лист1(3) функции понятны, но не совсем понятно как присваивается приоритетность если функция берет по одному значению не зависимо от других.
Что касается первого  измерения понятно - оно и так в данном наборе данных первое и  по нему можно ограничить поиск. Но ведь поиск второго приоритета нужно увязать с первым, а я не вижу чем они связаны.
Разбираюсь весь день. После напишу, что смогла сделать.
Но все варианты считают.
Низкий поклон вам из Красноярска
 
Цитата
KatrinM:  не совсем понятно как присваивается приоритетность
ведь поиск второго приоритета нужно увязать с первым, а я не вижу чем они связаны
Цитата
Я:  Не стал упрессовывать в одну формулу
вся логика  в R37:AH41   Согласно вашим условиям последовательно (рекурсивно) ищется нужное значение, далее исключаются не только меньшие но и большие его... и так до 5-го приоритета
Цитата
В листе Лист1(4) ...
Здесь в формуле другой принцип. Он основан на сортировке всего массива и его особенностях...
 
Цитата
написал:
Не стал упрессовывать в одну формулу,
Павел, здравствуйте!
Вставила все расчеты из 1 листа, мне там понятно всё.
Начала проверку на разных вариантах и столкнулась с тем, что бывают ситуации, когда в ГОСТ не существует Наименьшего из больших.
В ситуации когда в выбранном по первому и второму приоритету векторе данных оставшиеся значения меньше чем исходное, третий приоритет пишет #ЧИСЛО, а нужно что бы в ситуации когда выбор застопорился, присваивалось исходное значение.
Пока так не получается. Пробовала вставлять ЕСЛИОШИБКА, но запуталась и не смогла получить результативную формулу.
Я в файле поставила другие изделия. Посмотрите строки 47 и 57 в первом листе.
Помогите, пожалуйста ликвидировать ошибку.
Изменено: KatrinM - 19.04.2025 08:49:05 (файл поправила, проставила значения как должно быть)
 
KatrinM,  пожалуста
Цитата
KatrinM:  Начала проверку на разных вариантах и столкнулась с тем, что бывают ситуации, когда в ГОСТ не существует Наименьшего из больших....
...нужно что бы в ситуации когда выбор застопорился, присваивалось исходное значение...
Пробовала ..., но запуталась и не смогла получить результативную формулу.... Помогите, пожалуйста ликвидировать ошибку
см файл
 
Цитата
написал:
см файл
Павел, большое спасибо.
Все получилось.
Теперь буду тестировать, так как самих ГОСТ по 1000 строк для разных классов задач около десятка.
Надеюсь испытания пройдут успешно :-)
Вы профи !!!
Страницы: 1 2 След.
Читают тему
Наверх