Страницы: 1
RSS
Выбрать из массива значения отличающиеся друг от друга на определенную величину (шаг), Поиск другого решения трудоёмкой прикладной специфической задачи
 

Здравствуйте уважаемые профессионалы Excel.

Прошу Вашей помощи в поиске другого решения трудоёмкой прикладной специфической задачи.

Пример с моим решением в прикреплённом файле.

Исходные данные для расчёта представлены во вкладке «Условия».

Из представленных «Значений» (их может быть и больше) надо выбрать значения, которые отличаются друг от друга на величину «Шага» с занесением их в таблицу, пример во вкладке «ИТОГ».

В моём решении, вкладка «РАСЧЁТ» (для значения «509200» из выпадающего списка ячейки «А1») жёлтым выделены значения, из которых минимальные вручную вставляются в таблицу (вкладка «ИТОГ») с добавлением «ШАГА» и количества шагов. Минимальное количество шагов «1» максимальное не ограничено, в зависимости от расчёта. Тоже самое делается для остальных значений из выпадающего списка ячейки «А1».

Во вкладке «ИТОГ» пример выбранных из «РАСЧЁТА» вручную до шага «500» значений, удовлетворяющих условию для выбранного в ячейке «А1» (выпадающий список) значения «509200».

Суть проблемы в том, чтобы сделать эту выборку автоматической для всех «Значений». Вручную это очень долго и естественно возникает много ошибок.

Может есть какие-то другие более простые решения с помощью формул. Если только макрос, то прошу помочь так как в этом я не силён.

Выбранные значения подлежат ещё дальнейшей выборке по другим условиям, но уже только вручную.

Версия Excel 2016.

Заранее
благодарю Вас за уделённое внимание и помощь.
Изменено: Sanja - 22.03.2026 13:16:44
 
Цитата
Сергей написал: Может есть какие-то другие более простые решения...
Может и есть вот только совсем не понятна логика
Согласие есть продукт при полном непротивлении сторон
 

Логика вроде бы простая, может объяснил сложно и по примеру не понятно. Попробую заново.

1.     Во вкладке «Условия» заданы «Значения» (А2-А129) и «Шаг» (от 50 до 2000).

2.     Из заданных «Значений» надо найти и выбрать значения начиная с которых при добавлении шага (от 50 до 2000) получается последовательность значений (из А2-А129), которые отстают друг от друга на величину шага, например, из вкладки «Расчёт»:

- 522100, 522400 – получили два значения (из А2-А129) с шагом между ними 300. В таблицу надо занести первое значение 522100 в столбец с шагом 300 и указать количество шагов между значениями – «1»;

- 510100, 510550, 51100 – получили три значения (из А2-А129) с шагом между ними 450. В таблицу надо занести первое значение 510100 в столбец с шагом 450 и указать количество шагов между значениями – «2»;

- 545600, 546000, 546400, 546800, 547200, 547600 – получили шесть значений (из А2-А129) с шагом между ними 400. В таблицу надо занести первое значение 545600 в столбец с шагом 400 и указать количество шагов между значениями – «5».

3.     В итоге в таблицу должны быть занесены для каждого шага (от 50 до 2000) все возможные значения, удовлетворяющие вышеописанному условию.

 
Сергей, см файл
 
ПавелW огромное спасибо за Ваш труд, профессионализм и помощь. Проблема по автоматическому заполнению итогов Вами решена. Буду теперь разбираться с Вашим решением и формулами подробнее и использовать в работе.
Ещё раз огромное спасибо за не равнодушие к чужой проблеме. Всего Вам самого наилучшего.
 
Сергей, пожалуста)
задача решается и без листа 'РАСЧЁТ' такими массивками:
'Значение' (A4):
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ(Условия!$A$2:$A$129;Условия!$A$2:$A$129+A$2)*НЕ(СЧЁТЕСЛИ(Условия!$A$2:$A$129;Условия!$A$2:$A$129-A$2));Условия!$A$2:$A$129;"");СТРОКА(A1));"")
'Кол-во'  (B4):
=ЕСЛИ(A4="";"";ПОИСКПОЗ(;СЧЁТЕСЛИ(Условия!$A$2:$A$129;A4+A$2*СТРОКА(B$1:ИНДЕКС(B:B;СЧЁТ(Условия!$A$2:$A$129)-ПОИСКПОЗ(A4;Условия!$A$2:$A$129;)+1)));)-1)
...но с учётом количества таких формул - будет несколько ресурсоёмко)
 
ПавелW ещё раз огромное спасибо. Пока разбираюсь с первым вариантом,но обязательно доберусь и до второго. Второй получился не сразу сообразил что надо оформлять как формулу массива. Осталось разобраться с самими формулами.
Всего Вам самого наилучшего.
Изменено: Сергей - 24.03.2026 18:33:51
 
Вариант решения с помощью Power Query.
Время обработки данных на моём компьютере - в районе 3 секунд. Но понятно, что с увеличением значений и количества шагов время обработки будет увеличиваться.  
Шлюхогон42
 
Дмитрий спасибо , что нашли время для поиска нового решения. К сожалению в Power Query я не силён и не смогу оценить Ваш труд. Я не понял полученный результат и что обозначают эти цифры в таблице. То что мне хотелось бы увидеть выглядит совсем по иному, что я и пытался объяснить выше.
Ещё раз спасибо и извините за не понимание. Всего Вам самого наилучшего.
 
Цитата
ПавелW написал: ...но с учётом количества таких формул - будет несколько ресурсоёмко)
Цитата
Дмитрий Никитин написал: Время обработки данных на моём компьютере - в районе 3 секунд.

Решение макросом. Время - около 100 МИЛЛИсекунд )

Скрытый текст

Не стал разносить значение и количество по разным столбцам (при необходимости можно доработать)
Макросу не нужен список шагов.
В коде задаются первое/последнее значения и сам шаг.
Можно сделать - Начало/Шаг/Количество шагов
Можно их вбивать на листе, а не в коде
На листе 'Условия' нажмите на кнопку
Согласие есть продукт при полном непротивлении сторон
 
еще вариант PQ.
код
Пришелец-прораб.
Страницы: 1
Читают тему
Наверх