Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 След.
WorkHours (РАБЧАСЫ). Функция для получения разницы между двумя датами в часах с учётом множества факторов
 
Попросили сделать вариант - решил раскрыть тему и зафиксировать результат, чтобы не потерять
Ход разработки
WorkHours
WorkHoursFull
Коды
Обо всех нестыковках в работе, вопросах, пожеланиях и предложениях прошу сразу сообщать в этой теме
Нестыковки сопровождать файлом из этого поста с заполненными данными, вызывающими вопросы/ошибки и подробными комментариями
Пожелания и предложения должны быть подробно аргументированы - зачем это и чем лучше того, что есть

Модераторам: если решите перенести в Копилку, то я не против  ;)
Изменено: Jack Famous - 26 фев 2021 15:34:21
Реквизиты для благодарности и контакты для связи — в профиле
ℹ Help. Table of color constants MS Excel. Таблица констант цветов, Таблица констант цветов
 
Использую Планету, как справочник и делюсь с желающими
Функция для получения контрастных фонов
Изменено: Jack Famous - 19 фев 2021 11:02:27
Реквизиты для благодарности и контакты для связи — в профиле
УФ на листе. Запомнить, удалить, восстановить
 
Приветствую!
Фильтрую по цвету шрифта, а правила УФ мешают иногда - вот хочу запомнить их, удалить и восстановить после фильтрации
Особо ничего полезного не нашёл - только, как создать или удалить. Есть идеи?
Все Пети ярко-жёлтые, но часть из них УФ красит в другой
Изменено: Jack Famous - 4 фев 2021 13:50:52
Реквизиты для благодарности и контакты для связи — в профиле
Почему TextBox преобразовывает "¶" в перенос строки, UserForm. TextBox transform Chr(182) = "¶" To Chr(13)&Chr(10) = vbCrLf (or vbNewLine platform specific)
 
Приветствую!

Собственно, наткнулся на вот такую "багофичу" - снова ни фига не очевидную и из-за этого неприятную
Код
это опять законно и прописано где-то, да?  :D
Я думаю, что это вроде видимого аналога переноса, как к Word…
Изменено: Jack Famous - 25 янв 2021 16:41:16
Реквизиты для благодарности и контакты для связи — в профиле
Закрепить строку. Как убрать отображение границы закрепления
 
Приветствую!
Закрепил строки и мешает граница закрепления — можно её НЕ отображать? Если да, то как?
С сеткой
Без сетки
Изменено: Jack Famous - 22 янв 2021 09:59:35
Реквизиты для благодарности и контакты для связи — в профиле
Power Pivot (PP). Сводная по 2ум таблицам, связанных «один-ко-многим», как правильно создать структуру
 
Приветствую!
1. Есть такая родительская таблица
2. Есть детализация по ней (не все ключи)
далее, я создаю запросы PQ к каждой из таблиц, объединяю их в третий запрос и …
3. … создаю вот такую сводную
Вопрос: Как получить ТАКУЮ сводную?
То есть, надо как-то учесть исходное количество по родительской таблице и получить разницу "было-детализировано". Думаю, что тут надо в PP, но можно и без него — тогда название темы будет просто "Комплексная сводная" - я ХЗ как ещё можно назвать такое  :D
Реквизиты для благодарности и контакты для связи — в профиле
Оформление сообщения в теме (любая ветка), Правила и приёмы оформления сообщений для удобства восприятия
 
Если вы создали тему, то менять её название вы можете ТОЛЬКО ДО первого сообщения/комментария в ней (кроме стартового)
Это не правило и не приём — просто нужно записать, т.к. это самая частая проблема после получения замечания от модератора по названию

  1. Режим "BB-code". Переключиться на/с него можно, нажав соответствующую кнопку на панели
Скрин
этот режим позволяет видеть менять структуру сообщения, которая представлена в виде тэгов (как в html, например)
Далее, при указании тэгов текстом, квадратные скобки [ ] будут заменены на фигурные { }
  2. Чтобы дать имя спойлеру, нужно отредактировать первый тэг вот так: {SPOILER="Название спойлера"}Текст/код/ссылки на загруженное изображение или файл{/SPOILER}
Спойлеры могут быть вложены друг в друга. В спойлер могут вложены одновременно И текст, И код, И ссылки
Чтобы вставить изображение (как я вставил скрины выше) в спойлер, нужно сначала загрузить изображение в тему, затем поставить курсор между тэгами начала и конца спойлера (в "тело" спойлера) {SPOILER}вот сюда{/SPOILER} и. наконец, нажать мышкой на название файла в списке вложений сообщения (изображение курсора изменится на руку)
Вот скрин, как выглядит сообщение после всех правок

Экспериментируйте, спрашивайте, поправляйте, предлагайте  ;)
Изменено: Jack Famous - 14 янв 2021 09:50:47
Реквизиты для благодарности и контакты для связи — в профиле
Словарь (Scripting.Dictionary). Соответствие массивов ключей и элементов между собой
 
Доброго времени суток, Планетяне!

Пару раз видел тут на планете, как мэтры предупреждали (Hugo, Михаил Витальевич), что при цикле по массивам, полученным из ключей и элементов словаря, их соответствие не обеспечивается — то есть i-ый элемент массива может быть НЕ РАВЕН i-ому ключу:
Тест
Вопросы: есть ли этому подтверждения, сталкивался ли кто-то с этим, как поймать такой баг и где прочитать о не обеспечении соответствия?

Словари и так шустрые, но получение 2ух массивов (ключей и элементов) из словаря иногда бывает намного удобнее цикла по элементам и хочется уверенно использовать этот способ  :)

!!! ВАЖНО !!!
Обсуждается подтверждение несоответствия при раннем связывании, т.к. при позднем сюрпризы привычны (я его не использую)
Изменено: Jack Famous - 31 дек 2020 10:21:15
Реквизиты для благодарности и контакты для связи — в профиле
Алгоритмы. Игры. Сортировка объектов по контейнерам
 
Доброго времени суток, Планетяне!
Что-то уныло в последнее время на нашем форуме стало: вроде и тем полно, а всё один скучный шлак какой-то с нарушениями правил…

Для тех у кого есть время и желание предлагаю придумать/реализовать алгоритм для сортировки объектов по контейнерам. Навеяно логическими играми типа "BallSortPuzzle"
Правила (основные)
Задача: написать алгоритм (на VBA или нет), который бы возвращал полную последовательность перестановок элементов для решения задачи или количество дополнительных пустых колб для решения - в случае невозможности нахождения решения исходными данными

Доп. задача: сравнение алгоритмов на предмет скорости работы и/или оптимальности нахождения решения (минимальное количество перестановок)
Если что - я пока ничего не делал, закрываю год на работе и много дел  :)
Скрины
Комбинаторика: сочетания, перестановки, размещения (от МСН)

P.S.: К сожалению, тема по игре «Быки И Коровы» канула в лету  :(

Модераторам: прошу перенести в Курилку и удалить эту строку. Разместил в общей ветке в качестве рекламы, а то все курить побросали, я смотрю  ;)
Изменено: Jack Famous - 30 дек 2020 11:02:02
Реквизиты для благодарности и контакты для связи — в профиле
Обновление правил. Инструкции для нерадивых школодронов
 
Доброго времени суток, Планетяне!

Я в последнее время заметил приток "тем" (таких, как эта) для решения контрольных и прочих тестовых заданий. Большинство таких тем являются мусором и оп оформлению, и по содержанию, и по тактичности ТСа. Кроме того, в тщетных попытках объяснений очевидного безвозвратно стареют наши модераторы  :D

За сим предлагаю дополнить правила ссылкой на Пособие для студентов и школьников (или написать своё), а также мануал Как правильно задавать вопросы (у нас что-то подобное есть, но не так подробно).
Сергей у себя так сделал и теперь туда "посылают" всех "ололоевых" с их контрольными  :D

Кто что думает?
Изменено: Jack Famous - 15 дек 2020 09:27:39
Реквизиты для благодарности и контакты для связи — в профиле
Баг или фича. Диапазон проходит проверку на «массивность» | IsArray(Range)=True
 
Доброго времени суток, Планетяне!

Вопрос в названии: почему функция для проверки МАССИВА срабатывает на ДИАПАЗОН?
Как проверять: с помощью TypeName() — вернёт "Range"
Что не устраивает: при передаче аргумента в функцию или процедуру иногда возникает необходимость проверить её на "массивность". Выясняется, что не всегда это можно сделать одной лишь VBA.IsArray()

Тест
Рабочие VBA-функции для определения массива
Изменено: Jack Famous - 2 дек 2020 11:33:38
Реквизиты для благодарности и контакты для связи — в профиле
Power Query. Из диапазона в список (PQ. From range to list)
 
Доброго времени суток, Планетяне!
Как есть и как надо
Нашёл в Приёмах статью «Генерация дубликатов строк», но вариант через {[столбец1]..[столбец2]} реализовать не вышло
Прошу помощи …

Есть моё решение на VBA
Изменено: Jack Famous - 24 ноя 2020 13:24:27
Реквизиты для благодарности и контакты для связи — в профиле
VBA. UDF. Функция для проверки значения на строку нулевой длины «=""»
 
Доброго времени суток, Планетяне!
Может кому пригодится
Изменено: Jack Famous - 12 ноя 2020 12:20:00
Реквизиты для благодарности и контакты для связи — в профиле
VBA. UserForm. Как прописать закрытие формы по Esc вне зависимости от фокуса
 
Доброго времени суток, Планетяне!

Есть форма с MultiPage и кнопками. Чтобы прописать выход по Esc при фокусе на кнопке "bt" надо прописать такой код
Код
Private Sub bt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 27 Then Unload Me
End Sub
вопрос - можно ли (и как) прописать ОДИН раз выход по нажатию Esc вне зависимости от текущего фокуса?
Подозреваю, что нужно создать класс, как советует Дмитрий Щербаков, но не знаю, что и как…
Реквизиты для благодарности и контакты для связи — в профиле
При сравнении ячеек на равенство на листе регистр не учитывается
 
Доброго времени суток, Планетяне!

Собственно, вопроса нет, но я тут очень сильно офигел, когда увидел что обычное сравнение 2ух ячеек на равенство типа =A1=B1 не учитывает регистр
Есть функция =СОВПАД(), которая учитывает регистр, но не различает числа и числа-как-текст

По-моему, это не что иное, как очередная (пусть и задокументированная) глупость от мелкомягких  :evil:
Главное, многие функции регистрозависимы, но при этом проверка на банальное равенство этот регистр игнорирует
Я, конечно, знатно офигел от таких дел …

P.S.:
вопросов к функции =СОВПАД() у меня нет - она сравнивает текст, а значит числа перед сравнением преобразовываются и всё ОК
Вопросы к сравнению через равенство - ведь строки "ВАСЯ" и "вася" не должны быть равны при простом сравнении "в лоб" через "=". Получается, для полноценной проверки на листе, мне теперь нужно использовать 2 эти функции + =ЕСЛИ(), что, конечно очень неудобно и глупо, если честно…
Реквизиты для благодарности и контакты для связи — в профиле
Неточный поиск (Fuzzy Lookup). Метод перестановки слов местами
 
Доброго времени суток, Планетяне!

На работе вплотную занят реализацией нечёткого поиска различными методами и делюсь с вами наработками
Как работает
Модуль «MacroCall». Основная оболочка
Модуль «Fuzzy». Функция определения подобия для элемента
Скрины

:excl: Просьба сразу сообщать обо всех примерах некорректного расчёта подобия или других ошибках в работе макроса

Оригинальный макрос-оболочку пришлось сильно порезать для сайта, т.к. там полно вызовов вспомогательных процедур и функций из моей надстройки
Для работы пришлось бы половину своей библиотеки сюда скопировать и всё стало бы совсем непонятно  :D
Функция поиска подобия почти не была затронута
Изменено: Jack Famous - 29 окт 2020 13:34:50
Реквизиты для благодарности и контакты для связи — в профиле
Регулярные выражения (RegExp). Нормализация строки, Обзор методов быстрого преобразования строки
 
Доброго времени суток, Планетяне!

Создал тему, чтобы отшлифовать найденные решения по преобразованию строки к "нормальному" состоянию
Для чего это преобразование нужно: для автоматического точного поиска среди строк, отличающихся друг от друга несущественной информацией. А именно, удаление этой информации и приведение "несущественно" разных строк к одному виду

Решено. Огромная благодарность Андрею VG  :idea:  8)
Итоговый код
Скрин с примерами из файла (жёлтым выделено то, что стало дубликатами после обработки)
Изменено: Jack Famous - 29 окт 2020 09:39:52 (Добавил примеры преобразований)
Реквизиты для благодарности и контакты для связи — в профиле
Форматы. Как отобразить строки одной длины визуально одинаковыми в MsgBox
 
Доброго времени суток, Планетяне!

Дано: Есть две строки, каждая из которых "добита" пробелами справа до нужной длины
Проблема: в MsgBox они НЕ отображаются равными (нужно дополнительно добавить ~20 пробелов к короткому тексту), в то время как в Debug всё нормально
Причина: в Debug используется моноширинный шрифт, а в MsgBox - нет

Возможные решения:
  1. сделать свою форму вместо штатной MsgBox — тут всё понятно, не рассметриваем
  2. изменить шрифт MsgBox на моноширинный — насколько я понял, тут надо в WinAPI лезть, чего бы не хотелось, конечно
  3. Есть какой-то коэффициент, позволяющий добавить N пробелов для визуально корректного отображения
Кто-что думает?

Код и скрины
Изменено: Jack Famous - 15 окт 2020 13:49:42
Реквизиты для благодарности и контакты для связи — в профиле
Сортировка с помощью Power Shell, VBA. Sort by Power Shell
 
Доброго времени суток, Планетяне!

Андрей Лящук в этом сообщении показал пример сортировки через Power Shell, но я не могу никак разобраться с синтаксисом, поэтому сформулирую ряд вопросов:

  • как отсортировать одномерный массив от нуля (числа/текст/числа, текст, даты и т.д.)?
  • как отсортировать двумерный массив или 2 одномерных массива (значения  и индексы) параллельно, чтобы по индексам потом отсортировать двумерный массив?
  • как (и можно ли) подключить Power Shell через раннее связывание

Матчасть
Реквизиты для благодарности и контакты для связи — в профиле
Требуется сотрудник для работы в Санкт-Петербурге
 
сотрудник найден
Изменено: Jack Famous - 21 июл 2020 21:09:52
Реквизиты для благодарности и контакты для связи — в профиле
Баг или фича? Почему значение #d# для Excel'я является числом
 
Доброго времени суток, Планетяне!
Заказчик тут обнаружил интересную фичу (или багулину)…

Если писать 1e5, то это экспонициальный ввод числа - понятно, но почему литера d так себя ведёт?
Подробности на скринах и в названии темы

P.S.: замена .Value2 на .Value ничего не меняет
Реквизиты для благодарности и контакты для связи — в профиле
Готовые решения. Учёт квартплаты (на примере выгрузки из КВАДО)
 
Доброго времени суток, Планетяне! Сделал файл для учёта квартплаты

Что делает: хранит ежемесячно заносимые данные, показывает итоги и динамику цен за ед. каждой услуги
Как пользоваться:
1. Очищаем таблицу "вставка" (удалить все строки, кроме первой)
2. Скопировать данные с сайта
3. Вставить значениями, начиная с ячейки B2
4. Нажать кнопку GO - числа-как-текст будут приведены в нормальный вид, а список услуг будет проверен по справочнику (можно изменять)
5. Скопировать номера услуг и блок чисел из таблицы вставки в базу (вставить значениями)
6. Ввести дату отчётного периода (например, для ввода периода за апрель текущего года пишем 1/3, а для февраля прошлого будет 1/2/19)
Разделитель даты "/" может быть другим, например "-" (минус или тире) или "." (точка) — в зависимости от настроек ОС
Подробнее о датах и времени в Excel

При переходе на лист со сводной, она будет обновлена
При переходе на лист со справочником услуг, будут рассчитаны мин/макс и прочее для цен, а также общее кол-во и сумма для каждой услуги

Ссылка на файлообменник (файл + инструкция в скринах)
Изменено: Jack Famous - 23 июн 2020 16:50:03
Реквизиты для благодарности и контакты для связи — в профиле
Печать выделенных листов в один PDF
 
Доброго времени суток, Планетяне!

Вопрос в названии
Вот, что написал (не работает)

Ссылки:
Excel VBA код для экспорта вкладок в PDF
Сохранение листов а формате pdf в определенные папки
Макрос сохранения отдельных листов в общем файле формата PDF
Изменено: Jack Famous - 8 июн 2020 18:02:10
Реквизиты для благодарности и контакты для связи — в профиле
Обращение "на ты" или "на вы"
 
Доброго времени суток, Планетяне!

Всё чаще сталкиваюсь здесь на форуме и в прочих "интернетах", что подростки (особенно это среди них заметно и наиболее смешно выглядит) начинают "тыкать", ссылаясь на "положительный опыт зарубежного общения". Наиболее забавно, что некоторые из этих "продвинутых" даже не владеют высшим эльфийским английским дальше "London is the capital of Great Britain"  :D

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

То есть я за равенство - хотят люди "на ты" общаться, так пожалуйста, но перед этим нужно спросить у собеседника, как он к этому относится, а по-умолчанию извольте-с "на Вы"
Хочу разобраться - кто как считает и (самое главное) почему

Википедия говорит, что "на вы" - по-умолчанию
The Village неплохо раскрыл
Скрин

Другая позиция (отсюда): "Не стесняйтесь обращаться на «ты» в интернете: философия Сети отрицает иерархию" и "…не стоит ждать уважительного «вы», если возможность комментировать ваши посты и фотографии предоставлена любому встречному"
По такой логике, хочешь общаться - пиши дерьмо и читай дерьмо
Сразу вспоминается, что большинство "диванных острословов-троллей" при личной встрече никогда бы себе и половины острот не позволили бы, а язык бы смиренно находился где-то за анальным кольцом. Остальная малая часть, которые бы позволили - это наглухо отбитое быдло
Изменено: Jack Famous - 24 июл 2020 11:08:43
Реквизиты для благодарности и контакты для связи — в профиле
Михаил Витальевич пропал
 
Что случилось с Михаилом Витальевичем — кто в курсе?
Дурные мысли лезут в голову, т.к. контакты его молчат…
Реквизиты для благодарности и контакты для связи — в профиле
Мыльная подсветка синтаксиса в коде
 
Почему подсветка в коде стала мыльная?
Планируется ли менять?
На всех браузерах ли так? У меня Win7 Prof x64, Chrome

Я уже подумал, что зрение посадил  :D
Реквизиты для благодарности и контакты для связи — в профиле
Вставка строк срабатывает некорректно на отфильтрованном диапазоне
 
Доброго времени суток, Планетяне!

Вопрос в названии: вставка строк некорректно срабатывает (в примере должен вставить 3, а вставил по 2, а иногда где-то 3, а где-то 2), если поставить фильтр (по 1 или 2 в примере) и применить её для всех видимых ячеек
При этом пошаговый дэбаг пишет всё нормально, то есть, если руками делать тоже самое, то всё должно быть нормально
Также, если выделять без фильтра рандомные ячейки и применять макрос, то всё норм
Вспомогательные функции работают корректно

Вот схожая (но про другое) моя тема: Умные таблицы. Вставить строки
Коды
Изменено: Jack Famous - 29 апр 2020 20:16:28
Реквизиты для благодарности и контакты для связи — в профиле
Варианты округления в VBA, Поиск самого быстрого
 
Доброго времени суток, Планетяне!

Тестовый стенд делать не буду, но результаты скажу  :)

Итак, что я знаю на данный момент по тестам на 150 тыс элементов массива:
  • --Format$() шустрее WorksheetFunction.Round() ~ 1,5 раза (Format или  Format$ — на скорость не повлияло)
  • Round() шустрее --Format$() ~ 2 раза
  • CCur() где-то на уровне --Format$(), но всегда 4 знака - не подходит
Вопрос: кто какие ещё методы/способы округления знает? Протестирую на своих данных

Скрин (собственно, сам участок кода):
  • 47 тыс строк
  • 3 столбца с округлением до 6ти
  • 3 столбца с округлением до 4ёх
  • 12 столбцов с округлением до 2ух

P.S.: Я в курсе, что Round использует "банковское" округление — ради скорости пренебрёг
Скрин

UPD: Самый быстрый  стабильный вариант найден — от ZVI
Изменено: Jack Famous - 2 мар 2021 10:42:43
Реквизиты для благодарности и контакты для связи — в профиле
Полное (расширенное) сравнение двух списков (столбцов)
 
Доброго времени суток, Планетяне!

Время от времени по вопросам из общей ветки вижу необходимость в подробном сравнении двух списков между собой с выводом отчёта, поэтому выкладываю свою версию на основе оригинальной идеи (откуда узнал именно я) BlackBox: Расширенное сравнение двух колонок (списков)

Модуль «MAIN» (основной)
Модуль «WORK» (вспомогательный)

  • поддерживает предварительное выделение для первого списка
  • поддерживает выделение столбцов целиком (обрезает до рабочей области)
  • поддерживает работу со скрытыми строками (учитывает только видимые или игнорирует фильтр)
  • прочие проверки

ПЛЮСЫ:
  • в десятки раз быстрее BlackBox на больших объёмах
  • нет классов, для работы нужно всего 2 модуля («WORK» нужен для проверок, сортировки и диалоговых окон выделения диапазона)

МИНУСЫ:
  • нет заливки (замедляет выполнение и легко сделать самому по фильтрам, если очень надо)
Изменено: Jack Famous - 3 мар 2020 10:49:45
Реквизиты для благодарности и контакты для связи — в профиле
Подписка на форум, Как получать письмо на почту при появлении новых тем в какой-либо «ветке» форума
 
Доброго времени суток, Планетяне!

Вопрос в названии:
хочу, чтобы, при появлении новых тем (в ветке "Курилка", например), мне приходило сообщение на почту, как при подписке на обновления темы
Реквизиты для благодарности и контакты для связи — в профиле
Страницы: 1 2 3 4 5 6 След.
Наверх