Пользовательская функция сортировки значений диапазона и вывод массивом
Пользовательская функция сортировки значений диапазона и вывод массивом
Пользовательская функция сортировки значений диапазона и вывод массивом
|
17.10.2025 16:01:37
|
|||
|
|
|
Пользовательская функция сортировки значений диапазона и вывод массивом
|
17.10.2025 10:32:28
Дмитрий(The_Prist) Щербаков, размышлял так, что i, j и x ни при каких условиях не могут быть больше 25, то мне хватит и byte )
Sanja, всё заработало, но причину я так и не понял Спасибо всем! Копаю дальше )
Изменено: - 17.10.2025 10:35:32
|
|
|
|
|
Пользовательская функция сортировки значений диапазона и вывод массивом
|
16.10.2025 18:48:03
Всем спасибо, помогаете продвигаться дальше )
Изменил тип входных данных на Range и потом передал Range.Value в массив. Пока что затык на последнем цикле, строка 25. Он почему-то просто не работает. Есть идеи, что не так?
Изменено: - 16.10.2025 18:50:00
|
|||||
|
|
|
Пользовательская функция сортировки значений диапазона и вывод массивом
|
16.10.2025 15:13:57
Punkt5, я уже обрадовался, что - "Вот оно, решение!", но, почему-то не помогло...
А может кто-нибудь подсказать, как пошагово выполнить код функции или как попросить функцию остановиться в точке останова? Как вообще проводить отладку Функции, аналогично с Макросом? Может так будет проще разобраться в коде, где косяк... |
|
|
|
|
Пользовательская функция сортировки значений диапазона и вывод массивом
|
16.10.2025 13:43:23
testuser, именно это и делает та часть, с которой я "справился" )) Но только в виде макроса. Когда превращаю её в функцию, функция даёт ошибку.
|
|
|
|
|
Пользовательская функция сортировки значений диапазона и вывод массивом
|
16.10.2025 12:06:50
Доброго дня уважаемые форумчане.
В в программировании вообще и в vba в частности - самоучка, поэтому код, скорее всего, не самый эффективный, сильно не ругайте ) Некоторое время пытаюсь решить описанную задачу, но, видимо, без вашей помощи мне не справиться. Задача. Имеем диапазон входных чисел A2:A21 (назовём его ЧИСЛА), всегда около 20 ячеек, заполнено обычно около половины, значения в диапазоне 2,0-9,5 с округлением до 0,1, ячейки всегда заполняются вручную. К этому диапазону есть дополнительный диапазон B2:K21 (назовём его БУКВЫ), столбцов диапазона всегда 10, значения заполняются формулой на листе, значения всегда целые числа от 0 до 15. Пользовательская функция должна взять значения из ЧИСЕЛ, отбросить пустые или нулевые, оставшиеся отсортировать по возрастанию, и если в БУКВАХ значение не нулевое к конкретному значению ЧИСЕЛ записать результат с присоединением это буквы. Например, для ЧИСЛА 7,8 БУКВА a имеет значение 0, а буква b значение 4, в результирующем столбце должно совсем не быть "7,8-a", т.к. значение для a = 0, а "7,8-b" быть должно, т.к. для b значение = 4. Результирующий диапазон около 30 ячеек, значения должны быть текстом, пустых ячеек в конце остаться не должно, все пустые, не заполненные функцией, можно заполнить любым символом или текстом.
В виде простого макроса код выводит массив отсортированных по возрастанию данных из диапазона ЧИСЛА, но в виде функции почему-то работать отказывается. Буду благодарен, если поможете решить задачу до конца
Изменено: - 16.10.2025 14:53:36
|
|||||
|
|
|
Зависает окно userform, но макрос продолжает выполняться
Зависает окно userform, но макрос продолжает выполняться
|
12.05.2022 12:53:09
Jack Famous, спасибо за ответ!
Видится мне, что с самим макросом у меня всё ок. Об этом говорит то, что вначале всё отображается корректно, а в коде макроса после 16 итерации следует точно такая же 17-ая (обычный цикл For...Next), и ничего в тексте макроса не меняется, что могло бы как-то объяснить подвисание. При этом виснет не всегда после 16, это зависит от того, по каким книгам сейчас работает макрос. В процессе выполнения книги, опять же, не меняются.
Изменено: - 12.05.2022 13:04:55
|
|||||
|
|
|
Зависает окно userform, но макрос продолжает выполняться
|
12.05.2022 12:11:10
Доброго дня всем
Есть некоторый макрос, который сравнивает 3 различных диапазона в двух книгах и если значения совпадают выполняет перенос значений ячеек из одной книги в другую. Но суть не в этом. Прикрутил я к макросу userform для удобства отображения хода выполнения задачи. Целый progressbar мне не нужен, поэтому процесс выполнения отображается по типу "выполнено Х/из всего У". Перед началом работы макрос отключает обновление экрана и авторасчёт формул. Но почему-то окошко userform и всё окно excel виснет через некоторое время после начала работы макроса и вся красота с отображением процесса работы не работает
Что можно сделать что бы окна userform и excel не зависали и процесс работы продолжал показываться до завершения макроса? Самое очевидное, как я понимаю, либо как-то облегчить макрос, либо апгрейд железа? Но может есть другие варианты и можно как-то где-то поковыряться в настройках чего-то?
Изменено: - 12.05.2022 12:17:21
|
|||
|
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
|
31.08.2021 16:15:50
Всем спасибо! Что-то очень даже компактное получилось )
Объединил два варианта от МатросНаЗебре и No Name:
Изменено: - 31.08.2021 16:18:05
|
|||
|
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
|
31.08.2021 14:58:20
|
|||
|
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
|
31.08.2021 13:27:19
No Name, Юрий М, я понял, недорассказал деталь. "Некоторое действие" должно остаться вне цикла, т.е. первый цикл берет формулы, ставит единицы и завершается. Далее действие. Второй цикл возвращает формулы.
Т.е. первым циклом нужно собрать сразу все формулы столцов со всех листов и поставить единицы. Вторым вернуть сразу все формулы столбцов на все листы. Предложенный No Name вариант подходит, если бы не это "но".
Изменено: - 31.08.2021 13:35:05
|
|
|
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
|
31.08.2021 12:37:56
No Name, не будет этот цикл перезаписывать значения Ах на каждом витке?
Изменено: - 31.08.2021 12:39:53
|
|
|
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
|
31.08.2021 12:17:51
Ігор Гончаренко, не совсем понял, что мы выиграем этим циклом, ведь всё имена диапазонов и переменных всё равно остаются уникальными для каждого листа и нужно написать всё те же 31х3 строк
Изменено: - 31.08.2021 12:48:25
|
|
|
|
|
Массив vba со сбором данных с листов и возвратом обратно, Оптимизация существующего кода
|
31.08.2021 11:52:39
Доброго дня всем )
Хочу попросить помощи в оптимизации кода vba. Так-то всё работает, но чувствую, что есть более изящное и менее громоздкое решение. Есть книга с 31 листом. На каждом листе есть именованный диапазон. Размерность диапазонов на всех листах по столбцам - одинаковая, по строками - разная, заранее не известная. Нужно макросом собрать значение формул всех ячеек одного столбца каждого диапазона с 31 листа. Затем заполнить значения всех ячеек столбца каждого диапазона единицей. Далее производятся некоторые действия и в конце нужно вернуть значения записанные в переменную обратно в ячейки столбцов диапазонов на листы. Сейчас работает так:
И так 31 раз для каждого листа, с другими именами соответственно, Bx, By, Bz для второго листа и т.д.... Постоянный только номер столбца - всегда 7. Если бы листов было 1...5, всё просто, но листов 31 ))) и для каждого писать три строчки кода кажется неразумно. Чувствую, что логичнее было бы собирать всё циклом в один многомерный массив, но тут мои познания заканчиваются ) С многомерными массивами дела ещё не имел С vba знаком на любительском уровне самоучки. Сильно не ругайтесь )
Изменено: - 31.08.2021 11:59:19
|
|||
|
|
|
Программно посчитать количество всех страниц (на печать) в книге Excel - VBA
|
08.04.2021 12:09:48
Столкнулся с такой же задачей, до печати, программно получить количество страниц, но не во всей книге целиком, а на конкретном листе, коих в книге много. Как бы оптимизировать Ваше решение под конкретный лист в книге? |
|||
|
|
|
Запуск макроса в другой книге с неизвестным именем
|
25.12.2019 15:55:39
Ігор Гончаренко, Михаил Лебедев, всем ещё раз спасибо!
Действительно, как сказал Ігор Гончаренко, самый простой способ оказался положить макрос в первую книгу. |
|
|
|
|
Запуск макроса в другой книге с неизвестным именем
|
25.12.2019 12:50:32
Ігор Гончаренко, Михаил Лебедев, большое спасибо за ответы! Почти получилось то, что нужно.
С Activate всё работает, но мне не очень хочется что бы вторая книга активировалась. Получится у меня обойтись с помощью Application.Run ("Книга!Модуль.Макрос")? Если да, то помогите, пожалуйста, склеить строку аргументов, что бы вместо "Книга" вставлялся результат Replace(ThisWorkbook.Name, "ПЕРВАЯ", "ВТОРАЯ") |
|
|
|
|
Запуск макроса в другой книге с неизвестным именем
|
24.12.2019 12:55:52
Всем доброго дня.
Помогите, пожалуйста, решить следующую задачу: Условия: есть две книги с неизвестными но одинаковыми (за исключением последнего слова) именами и расширениями: "Книга пример ПЕРВАЯ.xlsm" и "Книга пример ВТОРАЯ.xlsm"; обе книги всегда лежат в одной папке; "Книга пример ВТОРАЯ.xlsm" не всегда открыта. Задача:
|
|
|
|
|
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
|
23.10.2019 12:49:48
Mershik, работает! Спасибо!
|
|
|
|
|
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
|
23.10.2019 12:41:51
IKor, нет, такой статьи не видел, но про БДСУММ() слышал. Единственный вопрос тогда встаёт о том, что эта функция берёт значения условий из ячеек, а мне нужно, что бы значения условий были записаны только внутри формулы, без дополнительных ячеек. Но спасибо за наводку, покопаю в сторону БДСУММ() поглубже.
|
|
|
|
|
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
|
23.10.2019 12:18:47
Mershik, это жестоко, но всё равно, спасибо за ответ. Ищу более универсальный способ..
|
|
|
|
|
Суммирование произведений, удовлетворяющим нескольким условиям, Условно И() ИЛИ() внутри СУММПРОИЗВ()
|
23.10.2019 11:42:26
Всем доброго дня. Помогите пожалуйста написать формулу, которая суммировала бы произведения, удовлетворяющие нескольким критериям, объединяющимся не только по И но и по ИЛИ.
Конкретный пример к приложенному файлу. В ячейке D19 получить сумму произведений строк в столбцах А и В, одновременно удовлетворяющих условиям: Критерий 1 = или(Январь;Сентябрь), Критерий 2 = или(Красный;Зелёный), Критерий 3 = не(Дерево). С такими условиями должны просуммироваться произведения строк 2 и 10, и в результате должно получиться 222. В столбцах Число 1 и Число 2 - только числовые значения до 3 знаков после запятой, в столбцах критериев - только текстовые значения, могут и будут повторяться. Критерии задаются внутри формулы. Дополнительных ячеек и ячеек с промежуточным результатом быть не может. Не имею ничего против формул массива.
Изменено: - 23.10.2019 11:43:29
|
|
|
|
|
Перебор комбинаций с выбором одной наилучшей по условиям
|
16.02.2018 16:51:50
MCH,Огромное Вам спасибо!
|
|
|
|
|
Перебор комбинаций с выбором одной наилучшей по условиям
|
16.02.2018 15:09:20
MCH, а возможно это представить в виде UDF, как было первый раз?
Изменено: - 16.02.2018 15:09:36
|
|
|
|
|
Перебор комбинаций с выбором одной наилучшей по условиям
Перебор комбинаций с выбором одной наилучшей по условиям
|
16.02.2018 11:01:05
MCH, чувствую, что наглею, но не поможете с вариантом, если маленьких отрезков 4 варианта разной длины: 2,4; 1,2; 0,9; 0,6?
Пытался разобраться сам, но как я понимаю, в таком варианте уже появляются вложенные циклы, а с их пониманием всё плохо. |
|
|
|
|
Перебор комбинаций с выбором одной наилучшей по условиям
