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

Страницы: 1 2 3 4 5 6 7 8 9 10 След.
Хранение структурированных данных (таблиц) в памяти и скорость доступа к ним, How to keep Data in RAM and get it Fast
 
Приветствую!
В одном из моих проектов возникла необходимость хранить в памяти несколько небольших одинаковых по полям табличек и очень часто получать из них информацию по индексам. То есть, вводные данные — 3 числа: номер таблицы, номер строки, номер столбца.

Решил проверить, что быстрее и делюсь с вами(Планета и Кибер).
Часть 1. 1D массив с 2D массивами или один 2D массив. Второй вариант в 2 раза быстрее.
В дальнейшем планирую проверить скорость ENum и User Defined Type — для превращения безликих индексов в осмысленные параметры.
Изменено: Jack Famous - 21.03.2024 11:11:05
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Личка. Письма на форуме. Зачем может быть нужно перемещать отправленные во входящие и обратно?
 
Приветствую!
Собственно, вопрос задан. Я причин не вижу.
Более того, только что промахнулся с кнопкой и нажал ОК (также называется) возле окошка "Переместить во входящие" вместо "Ответить".
И сколько так писем потерялось у людей …

Это просто очень глупо — так делать компоновку формы диалога…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Определение расстояния между 2мя точками на сфере (планета Земля) по координатам
 
Приветствую!
    Наткнулся на интересную тему (что редкость) и решил разобрать у себя.
    Формула от ТС оказалась гораздо короче и немного быстрее (при переносе на VBA), чем алгоритм с сайта.
    Кросс-таблица из темы ТСа преобразована в плоскую для удобства расчёта и сравнения.
    Несоответствие результата алгоритма (сайт "Gis-Lab") с проверочным (там же) — в том, что радиус Земли принят не совсем корректный (6 372 795 вместо 6 371 009 из Вики)
Скрины
Файл
Код
Ссылки:
Расстояние между 2мя точками на плоскости
Расстояние между 2мя точками на сфере. Вики
Расстояние между 2мя точками на сфере. Алгоритм вычислений
Калькулятор НЕПРАВИЛЬНОГО расчёта
[вроде] ПРАВИЛЬНЫЙ калькулятор
Расчёт на Дзене расстояние между Питером и Москвой и сравнение с данными Яндекса
Изменено: Jack Famous - 10.01.2024 16:28:38
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Омерзительные аватары
 
Приветствую!

Итак. на повестке изображения аватаров. Что говорят правила?
    • Запрещено:  3.2. … Создавать аватары порнографического, политического или религиозного содержания. Администрация вправе удалить такого пользователя без предупреждения.
    Также есть запрет на рекламу к в том числе в качестве аватара.

    Что делать, например, с такими автарами? Мне, например, очень не нравится эта всратая бабка. Она страшная, неприятная. Я бы не хотел, чтобы подобное было у меня тут в ленте. Я не вижу ни единой причины ставить такое в качестве своего аватара — я бы таких людей проверял на психические отклонения.

    А, если на форум зайдёт ребёнок? У нас полно обучающих Приёмов и видео.
Я не моралфаг, но у нас же не двач или фочан (ничего против них не имею, кстати), чтобы подобное считалось нормой.

    А если, кто-то поставит на аватар изображение трупа/казни? Есть ещё эротика (не порнография).
Также, можно в качестве аватара использовать изображение или даже гифку дефекации (есть ещё легендарное видео с банкой) и прочих "интересных" для общества явлений. На данный момент, это в рамках правил.

    Почему бы не использовать давно придуманную норму NSFW (Not Safe/Suitable For Work) или обобщить правила до "уместных" (определяется модераторами) для общественного (можно даже сказать "образовательного") форума изображений?

А то, распятие, которое многие на шее показательно носят (иногда — огромного размера), я не могу поставить (не то, чтобы я хотел — это просто пример), зато всякую погань — пожалуйста.
Изменено: Jack Famous - 27.11.2023 12:24:03
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Обобщение строк, SummarizedStrings
 
Приветствую!
Решил агрегировать у себя сборник вариантов по различным "обобщениям" строк между собой.
Тут будут храниться ссылки на темы (если оттуда) и последние версии моих кодов (возможно, некоторые будут обновляться здесь).

Начинаю с 2ух чужих тем т.к. очень интересен алгоритм решения задач.
В обоих есть мои и чужие решения.

Общая подстрока. Определить максимально длинную подстроку, содержащуюся во всех заданных строках.
Код. Всё в одной функции

Обобщающая строка. Собрать строку, в которой каждый N символ это самый часто встречающийся N символ из заданных строк.
Код. Процесс разбит на 2 функции.
Изменено: Jack Famous - 15.11.2023 14:07:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Концепция единой сметы
 
Приветствую!

    Последние несколько лет периодически возвращаюсь к идее создания "единой сметы". Я постоянно работаю со сметными данными и наличие разнообразных форм вывода (а также их изменение) сметной информации сильно усложняет процесс стандартизации сбора информации, а также плодит ошибки "человеческого фактора".
    А что, если будет создана сметная программа (или закон, позволяющий принимать сметы только в таком виде), которая позволит создавать файл (пока в приоритете xml формат), содержащий ВСЮ НЕОБХОДИМУЮ информацию о смете в заданном виде/структуре. Позволяющем ОДНООБРАЗНО обрабатывать (получать информацию) из ЛЮБОЙ сметы, созданной в соответствии с законодательством.

    Более того, пока я думал, нечто подобное уже ввели (ГлавГосЭкспертиза, МинСтрой), НО основные проблемы решены НЕ БЫЛИ:

    • постоянные изменения формата. Главная головная боль.
    Этого быть не должно. Информация должна находиться на своих местах. Если нужно ДОБАВИТЬ какую-то новую информацию, то должно быть выпущено ПОЛНОЦЕННОЕ ОПИСАНИЕ нового формата XML и ПОДРОБНОЕ СРАВНЕНИЕ с картинками отличий его от старого формата. Если какая-то информация потеряла свою актуальность, то её тэги в структуре просто будут пустыми. Это позволит создавать инструменты, собирающие данные из самых "новых" и самых "старых" смет в XML-формате. В идеале, со стороны государства должен поставляться и обновляться вместе с очередным форматом РАЗБОРЩИК, позволяющий представить информацию из XML в ЛЮБОМ необходимом виде (смета, ведомость ресурсов, расчёт стоимости ресурсов). Также. нет никакой технической сложности разработать универсальный сметный формат, включающий ВСЮ информацию на одном листе (в одном документе) без разбивки на саму смету и ведомость ресурсов.
    Сейчас же ситуация такая, что данные на разных "официальных" ресурсах отличаются между собой и все вместе отличаются от данных из официального приказа (привет, КСР и ФССЦ). Это должно быть исключено. Надзорный орган ОБЯЗАН ГАРАНТИРОВАТЬ ЕДИНОЕ место хранения информации, её ПОЛНОЕ СООТВЕТСТВИЕ приказам и возможность получения её в XML-формате.

    • несоответствие данных между собой
    Если раньше код сметы из листа Source (сырые данные из программы) и в самой смете могли отличаться или сумма ресурсов из ведомости не равна сумме ресурсов из сметы, то сейчас происходит то же самое, но уже в новом XML-формате. Старые болячки не вылечены.
    Решение простое: когда данные предоставлены в строгом формате с известной структурой, то несложно написать (включить в официальный разборщик) программу, которая выполнит все необходимые проверки и АВТОМАТИЧЕСКИ отклонит некорректные XML. Это существенно ускорит и удешевит процесс проверки. На данный момент, огромное количество (более 80%) смет, прошедших экспертизу, содержат ГРУБЕЙШИЕ ошибки и нестыковки на огромные суммы. Возникает закономерный вопрос: а в чём, собственно, тогда была "экспертиза"…

    • несоответствие ключей ресурсов справочникам или отсутствие таких ключей
    Проблема не относится к теме напрямую, но обозначу. Существует ОГРОМНАЯ потребность в ЕДИНОМ и ПОПОЛНЯЕМОМ (не изменяемом) справочнике ресурсов, с критерием актуальности ключа (вместо его удаления или, боже упаси, замены) и НЕИЗМЕННОЙ структурой.
    Опять же, технической сложности в создании такого справочника нет. Есть только проблема в сборе информации и категоризации ресурсов (всё решаемо). Основная проблема на данный момент, состоит в том, что созданием подобных справочников занимаются люди НЕВЕРОЯТНО ДАЛЁКИЕ от понимания БАЗОВЫХ ПРАВИЛ организации любого справочника.
Изменено: Jack Famous - 08.11.2023 09:49:03
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
«Хакерский фольклор». Происхождение некоторых известных (и не очень) терминов
 
Приветствую!
    Наткнулся на интересную статью (на хабре). Мне было интересно узнать [часто, совсем неочевидную] историю происхождения известных терминов.
Изменено: Jack Famous - 02.11.2023 11:29:26
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Универсальный парсер текстовых файлов(строк) с тэговой структурой типа XML/HTML с получением результата в двумерный массив и полным сохранением структуры, Parse XML/HTML to Array-2D
 
Приветствую!

Занялся созданием парсера, т.к. на работе возникла необходимость в частой обработке XML-документов.
    Предполагается, что по двумерному массиву (результат работы парсера) будет возможна полная обратная конвертация в исходную структуру XML/HTML.
    Разработка парсера ведётся на основе XML-документа "ГЭСН".
    Парсер НЕ будет использовать библиотеку XML-DOM.

В файле — визуализация конечного результата (двумерный массив) на листе с цветовой индикацией (только для визуала).
    Присутствует ссылка на родительский ID — иерархия.

Если к теме/инструменту будет интерес, то Виталий «BedVit» подумает над созданием [куда более быстрого] аналога в своей библе.

Ожидаемый результат
Исходный XML-файл
Изменено: Jack Famous - 18.09.2023 16:06:19
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Быстрое определения вхождения символа в список, Fast method to Define symbol by List
 
Приветствую!
    Мне тут прозрачно намекнули  ;) , что ничего в старом описании было непонятно, поэтому напишу примерный ход разработки по порядку.
Описание
    Присутствуют тесты для каждой функции — для визуализации работы.
    Сравнение сделал на реальной задаче "Удалить из начала и/или конца строки символы, согласно списка" — в конце портянки кода.
    Добавил файл с кодом и таблицей первых 8 000 (чуть больше) символов — для того, чтобы был понятен порядок и корректно указывались диапазоны символов. Присутствует разбитие на группы и цветовая индикация. Местами, есть комментарии.
Скрин Таблицы
Файл
Код
Изменено: Jack Famous - 17.11.2023 09:59:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Как правильно проверить значение на ошибки и пустые (или сразу отобрать числовые), Check for Errors and Empty (and find Num). Fast and Correct
 
Приветствую!
    Небольшое наблюдение: хотел ускорить проверку на [возможные] числовые значения или просто ускорить отсев ошибок и пустых.

    Что касается отбора [возможных] числовых значений: вариант "в лоб" (с помощью супербыстрой IsError() ) совсем незначительно (можно пренебречь) медленнее использования способности IsNumeric() к встроенному пропуску ошибок.
    А вот, при простом отсеве ошибок и пустых, отказываться от явной проверки (в пользу пропуска ошибок) уже точно не стоит. Дольше в 4 раза на примере.

    У кого есть что добавить (по теме) — обсудим  :)
Тестовый код
Изменено: Jack Famous - 10.08.2023 18:08:30
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Как определить, отключён ли Application.StatusBar (штатное состояние) или в нём написано "FALSE", How to distinguish between «Application.StatusBar = False» and «Application.StatusBar = "False"»
 
Приветствую!
    При получении Application.StatusBar в вариативную переменную, это всегда строка. Отсюда возникает неопределённость — как отделить штатное состояние False от присвоенного значения "False"?
    Проверка Application.StatusBar = False тоже срабатывает и на строку.
Пока что сделал проверку с гарантированным присвоением
Изменено: Jack Famous - 09.08.2023 15:23:04
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Как лучше передавать аргументы в функцию или процедуру — ссылкой (ByRef) или значением (ByVal)?, ByRef or ByVal?
 
Приветствую!
    Решил тут проверить кое-что для себя и зафиксировать тут  :)
    Если тип передачи аргумента не указывается, то по умолчанию используется ByRef. Иными словами, только передача аргумента значением нуждается в явном указании — ByVal.
    Передача аргумента по ссылке избегает его (аргумента) копирования и позволяет изменять передаваемые аргументы.
    Нельзя передать значением (ByVal) аргументы массивов, Но можно передавать значением аргумент типа Variant, в который запросто можно передать массив.

Справка:
    Passing Arguments by Value and by Reference (Visual Basic)

Похожие темы:
    Передача параметров в процедуру
    Передать значение переменной в управляющий модуль

Test String
Test Long (намного более непонятная картина)

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

    Также, плюсом вариативного аргумента является то, что его очень легко можно проверить на IsMissing(), если он опциональный — то есть был ли передан аргумент пользователем.
Например, в случае опционального лонга, его НЕпередача и его передача со значением 0 ничем не будут отличаться (если значение по умолчанию для опционального аргумента не задано или задано 0) и проверить будет просто невозможно (насколько мне известно).

    Выводы делайте сами  ;)
Изменено: Jack Famous - 08.08.2023 15:08:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Преобразование числа в буквы и обратно, Convert number to letters and back
 
Приветствую!
    Есть функция (идея не моя), которая генерирует условно-уникальные (возможны ситуации получения дублей) числовые (_451216832870371) ключи на основе текущей дата-времени компа.
    Хотелось бы сократить длину ключа при полном сохранении его значения (возможности обратной конвертации). Посчитал, что для этого должны подойти буквы, но, если есть другие предложения, то всё рассмотрю (и попрошу сменить название темы при необходимости).
    Жду ваши алгоритмы шифровки-дешифровки и пока подумаю сам.
Требования к алгоритму
Код


    UPD: Решено по совету от Marat Ta с помощью функции MCH отсюда.
    Теперь, при конвертации из 10 в 36 систему ключ "худеет" на треть: с 15 до 10 символов. Годится  8)
Функция от MCH (причесал под себя)
Тест работоспособности
Сравнение скоростей. Библа около 80ти раз быстрее.
Изменено: Jack Famous - 31.07.2023 15:01:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Планета Excel превращается в помойку
 
Приветствую!

    Интересует мнение постоянных помогающих — тех, за чей счёт форум вообще живёт.
    Как вы считаете - наличие подобных тем приемлемо для сайта?
    Я — категорически против.
Изменено: Jack Famous - 13.06.2023 09:17:26
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
BedvitCOM. Предложения для библиотеки. Получить одномерные массивы из столбцов двумерного, Array_2Dto1D_Columns
 
Приветствую!
    Возникла необходимость в очередном инструменте. Аналог на существующих процедурах невероятно медленный (в 6 раз на примере). Его можно ускорить, если метод из библы ArrayReDim будет дополнительно получать массив для вывода aOut (сейчас массив aInOut используется для ввода и вывода). Однако, думаю, что отдельный инструмент по типу моей процедуры на VBA будет заметно быстрее (и не придётся писать оболочку). Если, конечно, в библу вообще возможна передача неопределённого количества параметров, как ParamArray

    bedvit, кстати говоря, я рекомендую все процедуры, работающие с массивом "на месте" переделать под передачу массива вывода и предусмотреть возможность передачи в качестве ввода и вывода одного и того же массива, если это позволяет логика процедуры. Копирование больших массивов всё же не мгновенная операция и, как мы видим, порой, совершенно лишняя.
Тест
Изменено: Jack Famous - 30.05.2023 13:40:15
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
BedvitCOM. Предложения для библиотеки. Фильтр массива (1D/2D) по Long-массиву индексов, ArrayFilter_ByArrIndexes
 
Приветствую!
    Тема создана в рамках инструмента Простой фильтр одномерного массива, но посвящена самостоятельному инструменту.

    Что делает инструмент: фильтрует (оставляет) в переданном стринговом массиве только те элементы, чьи индексы есть в переданном массиве индексов (он отсортирован/собран по возрастанию индексов). Дополнительная опция позволяет инвертировать фильтр, то есть убрать элементы с переданными индексами.

    Нужна процедура в библе на сях, позволяющая делать тоже самое, что и вариант ниже на VBA. Интересно будет сравнить скорость, т.к. у VBA она очень неплохая. Далее, можно будет сравнить пересбор одномерного вариативного массива и двумерного вариативного массива — отрыв должен быть заметнее.
Код
Изменено: Jack Famous - 22.05.2023 15:38:46
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
BedvitCOM. Предложения для библиотеки. Простой фильтр одномерного массива, Array1D.Filter
 
Приветствую!

UPD 31/05/2023
Реальная задача (из #9):
    …я планирую модифицировать свою форму с фильтром, сделав 3 поля: "начинается с", "содержит" и "заканчивается на". Также будет опция "инвертировать" — для каждого из полей и "перебор" — для центрального поля "содержит" (чтобы при вводе "стальной металлокаркас" находилось "металлокаркас стальной", например). Это очень удобно для пользователя.
   А, чтобы превратить подобные вводные в пригодную для твоего фильтра форму нужно написать отдельную функцию, что, на самом деле, проблемой не является, но, уверен, что отдельный инструмент под это будет заметно шустрее существующего комбайна.

Дополнение к описанию выше:
    Учитывая, что подстроки могут повторяться и входить друг в друга, единственное, найденное мной решение с помощью комбайна — это получить все возможные перестановки подстрок и передать их с параметром ИЛИ.
Проблемы:
    • получить перестановки непросто — нужен генератор (у меня-то он есть, а другим как?)
    • на получение перестановок нужно время. Количество вариантов равно факториалу количества подстрок, что для 10ти подстрок уже равно почти 3,7 млн и само время их получения (не говоря о времени фильтрации) сведёт на нет всю мощь комбайна.
    • это противоречит самой логике комбайна. Это просто костыль, на который он не рассчитан. Например, если задано начало и конец, то в комбайне придётся каждую комбинацию подстрок сопровождать ими в виде "начало*комбинация*конец".
Решение:
    У меня это решается сортировкой подстрок от наибольшей и удалением (заменой на символ 0) очередной найденной подстроки из строки поиска. При этом, количество операций равно количеству подстрок, а начало/конец проверяются ПЕРЕД подстроками и один раз для каждой строки массива.
    Мой инструмент гораздо удобнее применять (как минимум — в описанных условиях 3ёх полей ввода).
    Лучше всего для решения этой задачи — иметь такой же инструмент, но на сях.
End UPD

Зачем:
    фильтр-комбайн Виталия крайне сложен для использования (ввод условий), и (что более важно, т.к. ввод условий можно перехватить на VBA) крайне редко бывает необходим в таком виде. Возникла необходимость и сформировался конструктивный запрос на гораздо более упрощённый фильтр.

Что делает:
    • возвращает (изменяет переданный) Long-массив индексов, оставляя только те, что подходят. Пересбор по индексам очень быстрый (на сях — тем более), функция становится легче (не нужно заполнять массив значений, т.к. он может быть не нужен) и универсальнее (можно передать один массив, а по полученным индексам собирать значения из другого, такого же размера).
    • ищет переданный массив подстрок в каждой строке переданного массива. Массив может быть пустым, если переданы начало и/или конец (см. далее)
    • можно передать начало и/или конец отбираемых строк. Не зависит от массива переданных подстрок и типа поиска.
    • можно искать подстроки БЕЗ учёта порядка — NotOrder
    • можно искать строки НЕ СООТВЕТСТВУЮЩИЕ началу/концу/подстрокам — NotEqual
    • поиск (в моей интерпретации) осуществляется С УЧЁТОМ РЕГИСТРА, поскольку основное применение данного фильтра будет в форме поиска, а там у меня уже присутствуют различные варианты массивов на основе заданного (то есть, для реализации поиска без учёта регистра, например, я буду осуществлять поиск с учётом регистра в массиве, где все элементы уже преобразованы в нижний регистр).

    Для теста используется генератор фраз из этой моей темы.

Основной код. Функция — вверху, тесты — внизу
Генератор строк из заданного списка


UPD: 29/05/2023:  — Актуальная версия 1.0.
Изменено: Jack Famous - 31.05.2023 13:24:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Получить все бинарные числа для заданного количества знаков, Get Binary values for target LenNum
 
Приветствую!

    Сочинил процедуру для быстрого получения всех бинарных (состоящих только из цифр 0 и 1) чисел до заданной длины числа.
    В примере получаю все значения до 10ти знаков включительно. Количество чисел = (2 ^ 10) - 1 = 1023. Выполняется мгновенно.
Код

    Скорость меня устраивает, в цикле такое запускаться не будет (а, если будет, то есть статичные массивы), но, возможно, я что-то упустил или сделал не совсем оптимально. Прошу дать обратную связь.


UPD 25/05/2023: Стринговый комбайн.
    Решил не делать новую тему, т.к. очень похожая задача.
    Теперь нужно получить практически то же самое, но с ведущими нулями и, как следствие, в стринговый массив.
    Вопрос тот же — как ускорить?  :)
Ряд для длины 3
Код с таймингом в тесте
Изменено: Jack Famous - 25.05.2023 14:18:03
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
VBAшники не пишут макросы, Душный разбор некорректного (но повсеместного) использования термина
 
Приветствую!
Давайте говорить правильно

    С недавних пор решил бороться с некорректным использованием термина "макрос". Начал с себя, а потом и в общении с заказчиками стал пояснять важную разницу.
    Итак, по определению, но своими словами: макрос (правильно говорить "макрокоманда") [здесь и далее будут подразумеваться макрокоманды в продуктах MS Office и подобные им] — это записанная последовательность действий пользователя.
    Из этого следует, что макросы пишет сама программа/приложение и никто другой. В MS Excel этим занимается специальная программа, которая так и называется — макрорекордер (MacroRecorder — "макрописец").
    Никто другой и ничто другое макросы не пишет. Чисто технически, программист, конечно, может написать альтернативную программу, которая подключается к приложению (MS Excel, например) и "переводит" действия пользователя в программный код, но, как мы все тут понимаем, разговор, не об этом.

    Вывод: программисты пишут программы, некоторые из которых пишут макрокоманды  :)

    Альтернативные термины (вместо "напишите мне макрос", говорим … ):
• напишите мне код на VBA
• напишите мне скрипт (не совсем корректно, но вполне допустимо) на VBA
• создайте/напишите мне программу на VBA
автоматизируйте мне следующие процессы с помощью VBA
Изменено: Jack Famous - 14.03.2023 17:32:14
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Программа для управления проектами типа scrumwise
 
Приветствую!
    Нужен аналог (более-менее похожий) для управления проектами типа https://www.scrumwise.com/ - желательно, бесплатный и точно официальный (не кряк), для использования в компании.
    Данное ПО должно относится к категории "Scrum/Kanban-board", быть бесплатным, иметь WEB-версию и поддерживать совместную работу.
    Пока изучаю этот перечень.
Изменено: Jack Famous - 13.03.2023 17:58:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Математика. Теория вероятностей. Менять ли выбор двери с призом при открытии очередной пустой, Сцена из фильма «21»
 
Приветствую!
    Тема родилась из этого обсуждения.

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

    Я сделал версию для любого количества дверей, а тестировал (и сделал скрины результатов) на 10, 100 и 1000 дверей. Мой код также подтвердил, что менять выбор — лучше. Прошу посмотреть код на предмет корректности.
Код Игоря из файла
Мои скрины и Код
Изменено: Jack Famous - 20.02.2023 16:01:49
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Сайт Юникода лёг
 
Приветствую!
Попробуйте зайти на https://unicode-table.com[SPOILER="Вот куда перекидывает меня"][/SPOILER]
Изменено: Jack Famous - 17.02.2023 15:44:45
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Переименование веток форума
 
Приветствую!

Основная ветка.
    Думаю, имеет смысл переименовать основную ветку "Вопросы по Microsoft Excel" в "Вопросы по Microsoft Excel для Windows", поскольку не все дойдут глазами до ветки по маку и поймут, что в основную об этом лучше не писать… Навеяно
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Лемматизация текста в Excel, Использование существующих библиотек или разработка алгоритма на VBA
 
Приветствую!
Тема родилась после изучения ссылки из этой темы.
    Файлы хранятся на Кибере из-за ограничений Планеты и нецелесообразности хранить подобные справочные материалы на файлообменниках.

Вопросы:
    • Как использовать программу MyStem в VBA?
    • Какие другие библиотеки можно использовать?
    • Можно ли и как перенести алгоритм в VBA, чтобы не зависеть от библиотек?
Можно, конечно, "вшить" библу в файл, но чистый алгоритм был бы очень интересен.

Ссылки:
    • Лемматизация в Excel, или «Робот-распознаватель 3.0» (Habr)
    • Статистический подход к семантике в поисковой рекламе: как сделать свой лемматизатор и генератор словоформ в Excel (Дзен)
    • Различные словари
Изменено: Jack Famous - 06.03.2023 10:14:31
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Сцепить элементы каждой "строки "двумерного массива с выравниванием "друг по другом", Join elements each "row" of 2D-Array with aligment
 
Новая запись в блоге

Приветствую!
Функция нужна для отчётов: Debug.Print, MsgBox или печать лога в текстовый файл, но "чтоб как таблица было".
Скрин
Код


UPD 26/01/2023:


Ускорил в 4 раза и добавил возможность выбора разделителя. Последние версии всех решений — в блоге. Здесь шапку не всегда смогу обновлять (сейчас обновил).
Изменено: БМВ - 26.01.2023 12:29:56
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Правила платной ветки «Работа»
 
Приветствую!
Здесь обсуждаются предложения к Правилам платной ветки.

Добавить пункт:
    "В теме ведётся только поиск исполнителя: "пишу в личку / в работе / обменялись / отказ". В противном случае, заказ превратится в свалку.
    Может быть уместно небольшое описание нюансов ТЗ со стороны отказавшегося исполнителя, чтобы другие имели это в виду.
    Запрещается предлагать и обсуждать варианты решения вопроса или вести какие-либо другие беседы. Обсуждения ведутся в основной ветке по конкретным вопросам."


Ссылки:
    • Правила основной ветки. Jack Famous
    • Предложения по работе модераторов. Jack Famous
Изменено: Jack Famous - 13.01.2023 13:49:22
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Замена слов, Word Replace
 
Новая запись в блоге на Кибере. Дублирую.
Все обновления данной темы (как и всех других тем-ссылок на блог) будут там.

Приветствую!
Решил выложить свои (и не только) решения по осуществлению задачи по замене слов в строке.
Вопрос был поднят на Планете, откуда я и взял шаблон для регулярки, созданный Игорем Гончаренко.

Начать нужно с того, что считать [отдельным] "словом": в предложенных решениях "словом" считается 1 и более [идущих подряд] символов кириллицы или латиницы.

Предложены 2 различных подхода: регулярные выражения и комплексный алгоритм на основе парсинга строки, как байтового массива. Для каждого из вариантов есть 2 версии: для замены одного "слова" и для замены "слов" по списку.

Все функции оптимизированы и очень быстрые, а также имеют опцию игнорирования регистра.
Базовые необходимые проверки присутствуют.
Регулярные функции являются булевыми, а мои — возвращают количество произведённых замен.

Регулярные выражения - чрезвычайно мощный инструмент (не забываем про раннее связывание), соревноваться с которым на VBA очень тяжело. Мне удалось приблизиться к его скорости, а в некоторых тестах даже сравняться или незначительно обогнать.

Файл
Код с замерами времени
Алгоритм НЕрегулярного варианта
Изменено: Jack Famous - 09.01.2023 15:45:33
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
BedVit. Предложения для библиотеки. BV.ArrayElements_Replace, BV — обозначение объекта библиотеки в коде VBA
 
Приветствую!

    bedvit, есть необходимость в функции, которая принимает 2 аргумента (массив 1D или 2D с элементами для замены, двумерный массив настроек из 3ёх столбцов) и возвращает количество элементов, в которых были произведены замены. А также, меняет элементы в переданном массиве.
Скрины с описанием и примерами

Нюансы:
    • Ошибки и пустые пропускаются.
    • Элементы для замены рассматриваются, как строки.
    • Если произошла замена, то вместо старого элемента будет строка, даже, если после замены элемент может быть числом/датой (это надо подумать…).

Варианты инструментов:
    У bedvit'а в библиотеке есть функции BV.Replace (более быстрый аналог штатного) и BV.FilterUnicodeChar (для удаления символов по списку с поддержкой диапазонов и НЕудаляемого перечня). Можно сделать их аналоги для работы с массивом элементов. В таком случае, функционал предложенного комбайна можно урезать и, тем самым, повысить скорость работы.
    Возможно, для списка символов ("1" в качестве первой цифры строки параметров) стоит убрать возможность игнорирования регистра…

    Прошу рассмотреть и принять решение  :)
Изменено: Jack Famous - 26.12.2022 10:49:58
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Предложения по работе модераторов
 
Приветствую!
    Здесь обсуждаем нюансы нелёгкого труда по сохранению облика Планеты силами наших модераторов.

Для чего эта тема создана:
    для предложений и уточнений.

    Например, реальное предложение: больше учитывать мнение и позицию ТСа по ведению его темы, если это не идёт в разрез с логикой и Правилами сайта. По просьбе ТСа принимать меры по очищению темы от флуда, выставлению предупреждений виновным, а также замечаний и бана — в случае непонимания.
    UPD 10/05/2023: Создать и закрепить под Правилами в общей ветке тему "Что делать, если мою тему удалили" и там описать, чтобы пользователь несколько раз внимательно прочёл Правила сайта и подумал, что он сделал не так. Профит в том, что модерам меньше пустой работы "попугаями".

Для чего эта тема НЕ годится:
    для обсуждений действий модераторов, будь то критика или похвала.

Ссылки:
    • Правила основной ветки. Jack Famous
    • Правила платной ветки. Jack Famous
Изменено: Jack Famous - 10.05.2023 16:54:01
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Правила основной ветки
 
Приветствую!
    Здесь происходит обсуждение различных нюансов существующих Правил основной [Вопросы по Microsoft Excel] ветки, а также предложений по дополнительным регулированиям.
    Без чётких правил модерация превращается в "что хочу — то и ворочу". Для сайта, на котором я стал специалистом, я не хочу подобной участи.

Для всех Правил:
Нет понимания, что светит за их несоблюдение.
Закрытие темы? Бан (на сколько)? Предупреждение (как учитывать)? Что-то ещё? Просто "ата-та"?
    UPD: это дичь, согласен - модераторы сами должны решать. Всего не пропишешь…


Цитата
3. Запрещено
3.7. Создавать темы с вопросами, ответы на которые даны в Приемах или прошлых темах форума.
что-то не замечал привлечений по этой статье… Рекомендую убрать, т.к., в противном случае, согласно этого Правила, абсолютное большинство тем подлежат Модерации.
    Дополнительный вопрос: а кто определяет, дан ли ответ на очередную Тему "в Приемах или прошлых темах форума"? Если этим должны заниматься модераторы, то какой у них есть инструмент для этого, кроме бесконечного поиска? Остаётся только пожелать им удачи.

Ссылки:
    • Правила платной ветки. Jack Famous
    • Предложения по работе модераторов. Jack Famous
    • Зачем темам давать осмысленное название?. Дмитрий Щербаков(The_Prist)
    • А не пора ли пересмотреть требование к названию темы?. БМВ
    • Немного обсуждений по вопросу названия тем и самовольного модерирования, Здесь мы рассуждаем о правильности замечаний в адрес ТС и "тыканий" в правила форума. GeorgeDark
Изменено: Jack Famous - 13.01.2023 13:40:41
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1 2 3 4 5 6 7 8 9 10 След.
Наверх