Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 404 След.
Формирование списка с уникальными значениями
 
Цитата
andypetr: Жду примера-сюрприза с нетерпением!
я вам его не обещал, так что ждать, возможно, придётся долго  ;)
С праздником и вас  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Формирование списка с уникальными значениями
 
Цитата
Евгений Смирнов: Недели две назад сравнивал работу, сейчас еще раз проверил. Никакой разницы нет в работе в трех вариантах записи Application.WorksheetFunction.Trim, WorksheetFunction.Trim, Application.Trim не нашел.
что не означает, что разницы нет. Лень искать (не так просто), но давно ещё вместе с ZVI обсуждали и тестировали.

Цитата
Евгений Смирнов: Во всех случаях получается функция рабочего листа
это не так

Цитата
Евгений Смирнов: Ведь эксель как то различает функцию Mid и оператор Mid, хотя у них 3 аргумента и все одинаковые.
очень просто — по положению. x = Mid(s, 1, 1) <> Mid(s, 1, 1) = x

Цитата
Евгений Смирнов: лучше писать полностью Application.WorksheetFunction.Trim
если нужна функция листа, то только её и нужно писать. Если работаете с разными приложениями (Applications), то, для однозначности можно указывать соответствующее, но не как Application, а как ApXl (Dim ApXl As New Excel.Application  или как-то так)

Цитата
andypetr: По-моему, "WorksheetFunction." излишество, можно использовать "Application.":
вы удивитесь, насколько вы не правы


UPD:
1. нашёл один пример у себя, но это не тот, о котором я говорил
2. рядом пост от New (но тоже не то)
Изменено: Jack Famous - 08.05.2024 17:22:32
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Транспонирование таблицы
 
Цитата
Павел Савин: PQ может запоминать подсветку ячейки
разумеется, нет, но может запомнить значение из другого поля той же строки — например "выделено"
Цитата
Павел Савин: Прошу подсказать как автоматизировать транспонирование данных из Таблицы 1, чтобы она получила вид, как в Таблице 2.
никак, потому что …
… ВОТ транспонирование (обмен строк и столбцов местами)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
"Статичный" фильтр. Как ускорить фильтрацию двумерного массива, Static Filter. How to SpeedUp Filter of 2D-Array
 
     Промежуточные тесты показывают, что за фильтром от BedVit'а мне не угнаться даже при "статичном подходе"  :D

    Учитывая новое удобство передачи критериев, огромные трудозатраты по организации "статичных" параметров и, конечно же, при всём этом, недостаточную для конкуренции скорость, я бы решал подобную задачу так:
    1. Собираем все необходимые (присутствующие на листе или ещё как) комбинации параметров. Осуществляем это обновление по кнопке или событию.
    2. Пропускаем их через фильтр из библы, запоминая в карту (по ключу комбинации) индексы строк или собирая значения сразу, как нужно. Осуществляем это обновление по кнопке или событию. Оно может быть как синхронизировано с п.1, так и нет (зависит от логики задачи).
    3. Выгружаем на лист калькуляции где и когда это нужно. Если нужен вариант через функцию листа, то в функции просто извлекаем необходимое из карты и отображаем на листе.

    В принципе, этого должно хватить для абсолютного большинства всех случаев. Как (и, если) понадобиться переосмыслить подход — вернусь к теме.

bedvit, ещё раз огромное спасибо за библу (в целом) и фильтр (в частности)!  :idea:
Изменено: Jack Famous - 08.05.2024 16:51:30
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Транспонирование таблицы
 
Павел Савин, здравствуйте
Цитата
Павел Савин: как автоматизировать конвертацию данных из Таблицы 1, чтобы она получила вид, как в Таблице 2
VBA/PowerQuery.
    Гуглите по запросу "excel редизайнер" — в том числе и на этом сайте.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Ускорение расчета путем отказа от использования Select и расчет внутри макроса вместо расчета формулой
 
Цитата
БМВ: В  данном случае только замедлите все.
смотря, как. Если можно функцию заменить на вставку вычислений, когда нужно, то одни плюсы и, в том числе, выше скорость.
    Если же функцию листа хочется сохранить то нужно сильнее заморочиться — можно для каждого диапазона хранить вычисления в ОЗУ и обновлять только по необходимости, а на лист быстро тянуть только готовый результат. Как тут. Но будет тоже очень быстро и практически не будет грузить пересчёты других формул листа.
    В любом случае, это история про словарь и его аналоги.
Изменено: Jack Famous - 08.05.2024 15:05:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
     Теперь стало совсем хорошо — параметры для фильтра можно задавать понятной простой строкой со вспомогательным одномерным массивом для проверяемых при фильтрации значений.
    Демонстрацию оформил на примерах из предыдущего поста
Оцените краткость записи с сохранением её смысла и читаемости
Особенно, старую процедуру ManualParams в сравнении с новой записью

Описание
Файл
Код
«Вот теперь тебя люблю я …» К. И. Чуковский. «Мойдодыр» :)
Изменено: Jack Famous - 08.05.2024 16:07:30
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Символы из одной ячейки перенести в отдельные ячейки и изменить, какйю формулу (или макрос) применить
 
Olal, здравствуйте

Цитата
Olal: нужно вывести эти плюсы и минусы в отдельные ячейки
=ПСТР()
Цитата
Olal: изменить при этом плюс на 1, а минус на ноль
=ПОДСТАВИТЬ()

Можно, конечно, ещё кодом VBA сделать или PowerQuery …
Изменено: Jack Famous - 08.05.2024 09:39:46
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Нужна помощь, как получить новые функции?, подскажите как обновить или скачать отдельно функции которых нет в экселе
 
Цитата
Sanja: Вариант - переписать формулы, используя функции имеющихся версий Excel
Цитата
Дмитрий(The_Prist) Щербаков: Без приобретения подписки выход из ситуации один, его подсказал выше  Sanja
отнюдь. Можно ещё макрофункцию написать, оформить в надстройку (в которой вообще очень много чего можно хранить) и "распространить среди жильцов нашего ЖЭКа"  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
VBA Из массива создать коллекцию коллекций, VBA Разбить массив на коллекции и далее создать коллекцию из этих коллекций
 
Цитата
AlexGor: Или знающему человеку проще делать с ноля, чем капаться в моих изысканиях?
да
Коллекции легко заменяются на словари, если нужно что-то искть/агрегировать по ключу. Приготовьте файл-пример с частью исходной таблицы и вариантами нужных расчётов
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
VBA Из массива создать коллекцию коллекций, VBA Разбить массив на коллекции и далее создать коллекцию из этих коллекций
 
AlexGor, здравствуйте
Если вообще не вникать в смысл, то попробуйте …
… массив коллекций:
Потом можно сделать мастер-коллекцию с индексами массива коллекций в качестве ключей и получится практически "коллекция коллекций".

Ну или напрямую создайте коллекцию и пихайте в неё другие коллекции в качестве ключей/значений. Лень пробовать — я с коллекциями не работаю.
Изменено: Jack Famous - 07.05.2024 15:24:11
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
WorkHours (РАБЧАСЫ). Функция для получения разницы между двумя датами в часах с учётом множества факторов
 
По просьбе mik94 и за символическую оплату сделал такую версию (написана с нуля) функции:
Описание
Скрины
Файл
Код
Изменено: Jack Famous - 07.05.2024 14:37:15
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
узнать код цвета ярлычка страницы
 
Sanja, согласен, не заметил (но как же тупо написано).
john22255, прошу прощения. Однако, вам объяснять очень долго, т.к. вы азов не понимаете. Пишете .ColorIndex, а ищете .Color. Поиграйтесь с цветами (присваивайте цвет и считывайте его) и этими 2мя методами. Так хоть есть надежда, что поймёте …
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
узнать код цвета ярлычка страницы
 
Цитата
john22255:
получаю цвет ярлычка таким образом
MsgBox ActiveSheet.Tab.Color

показывает 65535.но по условию не срабатывает
If Sheets(b).Tab.ColorIndex = 65535 Then

не могу понять почему
вам бы читать для начала научиться. В #2 ещё вам указали на ошибку логики.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
WorkHours (РАБЧАСЫ). Функция для получения разницы между двумя датами в часах с учётом множества факторов
 
Цитата
mik94: Ниже скрины
там вообще 2 часа будет, потому что 5е это воскресенье и учитывается только понедельник с 10 до 12
Цитата
mik94: Я думал, что Ваш макрос можно использовать для подсчета SLA (времени выполнения задачи по договору)
могу сделать вам под задачу — на коммерческой основе

Цитата
mik94: При такой постановке вопроса можно просто посчитать число дней и умножить на длительность одного дня
так вы не учтёте праздники(выходные в будни) и выходы (рабочие в выходные)

    Очевидно, невозможно сделать функцию одну для всех задач или пользователи просто с ума сойдут (и не будут) разбираться с инструкцией к ней.
    Я постарался обобщить основное и взял инструмент PLEX за основу.
    Ну и расширенная версия ещё есть.
Изменено: Jack Famous - 06.05.2024 17:35:36
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Итак, продолжаю популяризировать библу  :D
Написал несколько вспомогательных функций для работы с фильтром — стало куда проще (лично мне, во всяком случае).
Функции упрощают запуск самого фильтра, делая его информативным (чем всё закончилось), а также упрощают создание массива параметров для одинаковой логики (везде Or или And) и одного столбца (другая функция, включающая одинаковую логику).
Скрин с результатом «ManualPararms»
Файл
Код

Запуск кода производится из VBE. Результат выгружается на лист (если что-то нашлось). Есть сообщения для основных случаев.
Изменено: Jack Famous - 06.05.2024 16:28:44
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
узнать код цвета ярлычка страницы
 
Цитата
Sanja: Для желтого цвета: ColorIndex = 6
не уверен, но, возможно, для разных версий Excel этот индекс может быть разным.

john22255, "жёлтый" включает в себя огромную палитру цветов. Если вы задаёте программно, то можно использовать константу vbYellow. Если руками, то посмотрите, какой код цвета получается и запомните его куда-либо.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Формирование списка с уникальными значениями
 
Цитата
Евгений Смирнов: Для функции рабочего листа обязательно писать  Application.
неправда.
Для функции листа обязательно писать ФункцияЛиста (WorksheetFunction).
Application ВМЕСТО WorksheetFunction может изменить результат.

VBA.Trim удаляет только ведущие и хвостовые пробелы.
Аналог с листа — и двойные.
Application.Trim, КАЖЕТСЯ (не точно), позволяет обрабатывать сразу диапазоны, но быстрее цикла не будет. И там ещё какие-то нюансы, и я вообще не советую.
Изменено: Jack Famous - 06.05.2024 11:41:23
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
WorkHours (РАБЧАСЫ). Функция для получения разницы между двумя датами в часах с учётом множества факторов
 
del
Изменено: Jack Famous - 06.05.2024 11:10:47
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
WorkHours (РАБЧАСЫ). Функция для получения разницы между двумя датами в часах с учётом множества факторов
 
mik94, смотрю. Отпишусь в этот пост.

UPD:
Цитата
mik94: Если поставить, например, начало работы 3.5.2024 04:00, а окончание 3.5.2024 12:00 при графике работы с 10:00 до 18:00, то вместо 2 часов формула выдаст 8.
всё правильно считает. Если вы время указываете, то оно учитывается вместо времени графика. Было уже в #4.
Изменено: Jack Famous - 06.05.2024 11:11:21
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
СцепитьЕсли. Эффективный и универсальный алгоритм, JoinIf
 
nilske, не считаю, что для счётчиков нужны длинные названия. Тем более, они могут менять свое назначение.

А вообще, счётчики (как и остальные переменные) у меня и так по смыслу названы: r считает строки (Rows), c — столбцы (Columns), n — номера (Number),  p — позиции (Positions). Двойные эти буквы тоже, как правило, несут смысл, схожий с одинарными. s — это вообще строковая переменная (String).

Если человек по коду не может понять, что делает конкретная переменная, то тут я ему вряд ли помогу, хотя спросить можно. Возможно, для индивидуального удобства, вам стоит переименовать мои переменные в свои. Я так часто делаю с чужим кодом, чтобы читать было понятнее/привычнее.
Изменено: Jack Famous - 03.05.2024 22:09:54
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Найти подстроку в массиве строк и вернуть номер найденной строки
 
Цитата
БМВ: =INDEX(A:A;MATCH("*"&F2&"*";B:B;))
Цитата
dim284: вернуть номер строки
перемудрил  :)

Цитата
dim284: как оно у вас так получается?
я не формулист (в отличие от медведя, например), но то, что ВПР, ПОИСКПОЗ и всякие …ЕСЛИ работают со знаками подстановки — знаю  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Найти подстроку в массиве строк и вернуть номер найденной строки
 
=ПОИСКПОЗ( "*" & F2 & "*"; B2:B10; 0 )
Изменено: Jack Famous - 03.05.2024 16:31:21
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
СцепитьЕсли. Эффективный и универсальный алгоритм, JoinIf
 
Часть 2. Агрегация на отсортированном по ключам массиве
Без подключенной библы bedvit'а тут делать нечего — штатные сортеры уступают многократно и проигрывают, даже не начав сцепку.
Файл
Модули
Изменено: Jack Famous - 03.05.2024 16:14:57
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Словарь быстрее наполняется, если ключи для него отсортированы, Sorted Keys is good for Dictionary
 
testuser, привет! Спасибо за внимание!
Ну, тут не сравнение методов а демонстрация того, что сортировка ключей сильно влияет на скорость наполнения словаря. Совсем неочевидный нюанс, о котором я (да и, наверное, многие, если не все) не знал.

Цитата
testuser: Коллекция оказывалась значительно быстрее на объемах 500 + тыс.
делал подробное сравнение тут

Цитата
testuser: В общем интересные моменты есть, хотя в сравнении, с UnorderedMap это все это конечно выглядит игрушками.
карта даже на отсортированном быстрее (почти в 2 раза) на 100 тыс. уникальных  :D
Изменено: Jack Famous - 03.05.2024 15:12:37
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Словарь быстрее наполняется, если ключи для него отсортированы, Sorted Keys is good for Dictionary
 
Приветствую!
Заметил ещё одно очень странное поведение словарей — скорость заполнения/проверки наличия сильно зависит от порядка ключей в массиве. Отсортированные ключи добавляются/проверяются намного быстрее (~ 6 раз на примере).
Для сравнения добавил карты Виталия из библы — тоже есть различие, но на уровне погрешности.
Файл
Код
Не перестаю удивляться VBA  :)   :idea:
Изменено: Jack Famous - 03.05.2024 14:19:56
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
СцепитьЕсли. Эффективный и универсальный алгоритм, JoinIf
 
Приветствую!

Представляю 1 основной способ — Progressive.
+ один "в лоб" (для примера)
+ один — с помощью массивов, но он никуда не годится.
+ один на основе Mid$() =. От него ничего реально качественного добиться (для универсальности) не вышло. Наверное, что-то можно подкрутить.

Что не исследовано:
    • метод скуля. То есть, отсортировать поле ключей и "сгруппировать" по ним, сцепляя строки.
    • контроль уникальности сцепляемых строк. С учётом регистра и без него.

Что-то из этого или всё сразу будет во втором тесте — с победителями (Progressive и Middle).
Файл
Код
Что нужно? Предложите более качественный алгоритм (возможно, на основе MidB() ).

Основная проблема: никогда заранее неизвестно, сколько уникальных ключей содержится в массиве и, сколько по каждому из них будет сцеплено значений. Массив может состоять только из ключей и тогда для каждого ключа будет только одно значение. Массив может состоять из одного ключа и тогда все значения нужно сцепить в одну строку (которая ещё может и не влезть в ячейку).

Если bedvit'у будет интересно, то предлагаю сделать такую процедуру — я протестирую.
В итоге, такая процедура должна принимать:
Возможно, имеет смысл сразу сделать комбайн (как для фильтра) — процедуру группировки двумерного массива со следующими аргументами:
Изменено: Jack Famous - 02.05.2024 17:27:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Зачем медведь закрывает темы
 
Evgenyy, согласен — это странно. Произвол чистой воды, ведь ту же горелую кашу обсуждать вполне себе можно.
Возможно, медведь имеет отношение к этой икре и не хочет лиш9него внимания  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Извлечь из исходной комбинации максимальных значений по заданным критериям., Пример: Извлечь из комбинации чисел 1 2 3 5 47 48 максимальных значений то есть 5 из 6
 
ТС написал в личку. Отвечаю тут. Cristal, здравствуйте.
    Я смотрел файл и описание — ничего не понял. Времени практически нет, а, учитывая потребность в PayPal (которого у меня нет и не предвидится), то и вообще смысла не вижу (и неинтересно, и неоплачиваемо).

    Рекомендую договориться с Апострофф'ом  ;)
Изменено: Jack Famous - 02.05.2024 09:48:10
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
"Статичный" фильтр. Как ускорить фильтрацию двумерного массива, Static Filter. How to SpeedUp Filter of 2D-Array
 
bedvit, подробно рассмотрим в моей будущей теме
Изменено: Jack Famous - 02.05.2024 17:14:45
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 404 След.
Наверх