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

Страницы: 1 2 3 След.
Создать UserForm со скриншотом
 
Всем привет!

По нажатию кнопки "Тест" макрос создаёт UserForm и размещает на ней скриншот.
Размер UserForm указан в сантиметрах в [C5:C6], диапазон для скриншота в [C7].
Высота текста, строк и столбцов для оптимизации скриншота рассчитаны в [C8:C11].
В итоге на мониторе должна получиться картинка 1:1, чтобы её можно было измерить линейкой.

Увы, размеры UserForm, рисунка в UserForm и ячейки листа в Excel отнюдь не в сантиметрах.
Пока наобум подобрал коэффициенты под свой 4K монитор - в режиме 2K с масштабом 100% норм.
Помогите поставить вместо них обоснованные коэффициенты, чтобы работало на любом мониторе.
PS: добавлена функция Screen, создание квадрата чётко 3х3 см и много всего интересного. ))

С уважением.
Изменено: Acid Burn - 21.12.2024 22:22:53
Условное форматирование уникальных групп цифр
 
Всем привет!

В столбце [A:A] набор 6-значных цифр (первые 3 - позиция генплана, вторые 3 - привязанные к ней объекты).
Нужна формула условного форматирования (УФ) для визуального разделения позиций генплана.
По сути нумерация уникальных значений в диапазоне ЛЕВСИМВ(A2:A551;3).

В [A:A] - желаемый результат.
В [B:B] - формула УФ ЕНЕЧЁТ(B1): работает правильно, но требует доп. столбец В.
В [C:C] - формула УФ ЕНЕЧЁТ(NumInGroup(A2;$A$2:$A$551)): работает на базе функции NumInGroup и ЕНЕЧЁТ.
В [D:D] - формула УФ NumInGroup2(A2;$A$2:$A$551): работает на базе функции NumInGroup2.

Код функций:
Код
Function NumInGroup(XX As Range, UR As Range) As Long
  Application.Volatile False
  Dim UC As Collection, UV As String, II As Long, JJ As Long
  Set UC = New Collection
  On Error Resume Next
  For II = 1 To UR.Count
    UC.Add Left(UR(II), 3), CStr(Left(UR(II), 3))
  Next
  On Error GoTo 0
  UV = Left(XX, 3)
  For JJ = 1 To UC.Count
    If UC(JJ) = UV Then NumInGroup = JJ: Exit Function
  Next
  NumInGroup = 0
End Function

Код
Function NumInGroup2(XX As Range, UR As Range) As Long
  Application.Volatile False
  Dim UD As Object, Data As Variant, II As Long, JJ As String
  Set UD = CreateObject("Scripting.Dictionary")
  Data = UR.value
  For II = LBound(Data) To UBound(Data)
    JJ = Left(Data(II, 1), 3)
    If Not UD.Exists(JJ) Then UD.Add JJ, UD.Count + 1
  Next
  NumInGroup2 = IIf(UD.Exists(Left(XX.value, 3)), IIf(UD(Left(XX.value, 3)) Mod 2, 1, 0), 0)
End Function

Можно ли оптимизировать функцию NumInGroup/NumInGroup2 или заменить её на формулу?


С уважением.
Изменено: Acid Burn - 10.11.2024 18:52:21
Парсинг текста
 
Всем привет!
Помогите распарсить текст, пожалуйста. Файл во вложении.
Изменено: Acid Burn - 06.06.2023 02:01:11
Расчёт вершин прямоугольника
 
Всем привет!
Помогите рассчитать координаты вершин прямоугольника, заданного высотой и координатами срединной линии.
Пока угол поворота 0 (пример 1), всё работает. Если есть поворот (пример 2), результат не правильный.
Пожалуйста, поправьте функцию. Файл во вложении.
С уважением.
Сбор данных всех ячеек всех листов для перевода
 
Добрый вечер!
Помогите выбрать значения из всех ячеек всех листов книги Excel в словарь.
Словарь надо отсортировать и вывести на лист Translate для дальнейшей русификации.
Варианты из раздела "Приёмы" не подходят.
Набросок кода с просторов Интернета в файле (модуль mTranslate) - выбирает лишь 193 строки.
С уважением.
Изменено: Acid Burn - 12.05.2023 02:21:39
Помощь с определением языка текстовой строки
 
Всем привет!

Помогите написать функцию/макрос для определения языка текстовых строк.
Оказалось, что в Excel достаточно просто использовать PythonLangDetect:
1. Идём в Excel - жмём Alt+F11 - жмём Ctrl+M: импортируем
-- VBA-JSON-2.3.1\JsonConverter.bas
-- VBA-JSON-2.3.1\specs\Specs.bas (он новее рекомендованного VBA-Dictionary-1.4.1\specs\Specs.bas)
2. Распаковываем в "D:\python" архив Python 3.11.3 Embedded и файл get-pip.py
3. Убираем "#" со строки "import site" в "D:\python\python311._pth"
4. Открываем консоль в папке D:\python - пишем:
python get-pip.py
python -m pip install langdetect
python -c "from langdetect import detect; print(detect("Проверка"))
: получаем "ru"
Согласно ISO 639-1 всё правильно.

Достаточно не использовать пути с пробелами и нажать "Start" в приложенном xlsm.
Если рядом появилась папка (data) и "ru" в консоли, то всё работает (написал Function LNG и Sub LNG2).
Для 36 строк определение языка занимает 27,41 с. (7,6 с./10 строк) - очень медленно.
Для 36 строк 8 ошибочно, 16 правильно и для 12 тупо нет профиля - тоже не очень хорошо.
В целевых файлах есть все 36 языков, строк от 2500 до 5000.
Реально ли избавиться от окна Python, ускорить или чем-то заменить Function LNG?

С уважением.
Изменено: Acid Burn - 07.04.2023 03:23:22
Помощь с ускорением загрузки XML-программы
 
Всем привет!
Помогите ускорить загрузку программы с epg.it999.ru.
Сейчас макрос работает 168,45 с. вместо желаемых пары секунд. ))
Что можно сделать?
С уважением.

===============

Финальный файл: 3,24 с.
Спасибо doober!
Изменено: Acid Burn - 05.04.2023 02:10:04
Помощь с обнулением детекта антивируса для макроса загрузки и распаковки файлов
 
Всем привет!
Посмотрите, пожалуйста, Sub DWL в приложенном файле.
На VirusTotal детект 4/62. Главное - Kaspersky Security Cloud (KSC) считает его Trojan-Downloader.Script.Generic.

Если закомментировать код загрузки и/или распаковки - проблем нет, иначе - вирус. ))
Писать батник для загрузки и распаковки и упаковывать в контейнер от BedVit не хочется. Что ещё можно сделать?
С Уважением.
Изменено: Acid Burn - 06.04.2023 15:41:14
Замена функции SuperLink
 
Всем привет!
Нужно найти быстрый способ запуска командных файлов при клике ссылки в Excel.
Во вложении 2 варианта реализации с использованием функции:
1) SuperLink: работает, но виснет при числе ссылок >4000.
2) SuperLink2 и Workbook_SheetBeforeDoubleClick: не работает.
Истина где-то между этими двумя вариантами:
а) либо выбросить из первой функции расчёты Friendly_Name (значок в ячейке), ScreenTip (подсказку при наведении), hide:: (режима скрытия окна консоли), mypath:: (режима определения пути, откуда запущена SuperLink) и упростить циклы для выполнения основной функции run:: (запуск командных файлов при клике)
б) либо переписать вторую функцию, чтобы она заработала
Нужна Ваша помощь!
Изменено: Acid Burn - 31.03.2023 22:06:53
[ Закрыто] SuperLink
 
Всем привет!
Нашёл SuperLink - способ запуска командных файлов при клике гиперссылки в Excel.
Это открывает кучу возможностей. Самое простое, наверное, открыть Excel-ссылку в плеере.
Но когда этих ссылок >4000, пересчёт и сохранение файла занимают до получаса!
Возможно также из-за того, что путь плеера и ID ссылок вынесены в переменные.
Поделиться исходным файлом не могу, воссоздал что-то похожее.
Как оптимизировать?
Изменено: Acid Burn - 30.03.2023 01:32:34
Найти координаты третьей вершины прямоугольного треугольника
 
Здравствуйте!
Совсем забыл геометрию. ((
Дано: координаты A,C; длина AC=DB, AD=BC; угол ACB=CAD=90 градусов.
Найти: координаты B,D. По сути надо найти координаты третьей вершины прямоугольных треугольников.
Спасибо!

PS: Финальная версия файла во вложении, надеюсь, кому-то ещё пригодится.
Изменено: Acid Burn - 10.04.2022 15:33:19
Пересчёт координат точек для построения контурной карты РФ
 
Всем привет и с Новым годом!

Помогите решить задачку.
Дано: контурная карта РФ.
Цель: показать GPS-точки на этой карте.

Вопросы:
1. Как реализовать формулу пересчёта GPS в XY на VBA?
2. Как сделать формулу обратного пересчёта XY в GPS?

С уважением.
Изменено: Acid Burn - 16.04.2023 03:28:02
Зачитать и сохранить плейлисты
 
Доброго времени!

Есть куча *.m3u* и *.asx, которые надо считать в Excel (Источник, Категория, Название, Ссылка, Сервер, Обложка, Статус).
Все прочие имеющиеся в плейлистах данные надо разместить в столбце "Не классифицировано" для ручного анализа.
После ручной доработки полученной таблицы надо создать новый набор *.m3u, взяв имена *.m3u из столбца Источник.
В идеале - 2 кнопки ("Считать" и "Создать") и очень быстрый код, т.к. файлов и ссылок просто немерено.
Формульный вариант парсера и тестовые плейлисты здесь.

Надеюсь на Вашу помощь!
Изменено: Acid Burn - 25.09.2020 17:36:36
Таблица для диаграммы. Связать две таблицы, чтобы вторая "достраивалась" при дополнении к первой
 
Всем привет!

Помогите осилить задачку:
- есть таблица 1: формируется выборкой для анализа данных;
- есть таблица 2: формируется формулами для построения диаграммы из таблицы 1;
- задача min: связать таблицу 2 с таблицей 1 так, чтобы она "достраивалась" при дополнении таблицы 1;
- условия: Excel 365 - можно использовать новые функции типа ПОСЛЕД() и др.
Пример во вложении, строки M10:Z10;M14:Z14;M18:Z18;M22:Z22 хотелось бы исключить.

Надеюсь на Вашу помощь!
Ограничить ось диаграммы значениями ячеек
 
Всем привет!

Для улучшения вида диаграмм удобно было бы контролировать шаг и сетку X и Y. Существующие варианты:
- формульное решение - не позволяет задать ни шаг, ни сетку;
- функция Пельтье - позволяет задать шаг, но не всегда корректно обновляется;
- функция Проктора - не позволяет задать шаг, но корректно обновляется.

В целом за добавление такой функции в Excel голосуют аж с 2015 года - на 10.08.2020 со мной уже 1151 голос.
Кстати, просьба поддержать голосование! А пока за неимением ничего подходящего, попробуем что-то написать.
Во вложении функция AxesScale, позволяющая задать шаг либо сетку диаграммы, вроде удобная и работает. :)
По моему мнению функция из разряда "must have", надеюсь, кому-то ещё пригодится.
Также в тему интересная надстройка Multy_Y - создаёт 2 и более оси Y с равномерным шагом.

С уважением.
Изменено: Acid Burn - 28.09.2020 00:15:42
Как одной формулой выбрать максимальное из средних, определенных для каждой строки массива?
 
Всем привет!
Подскажите, как выбрать максимальное/минимальное из средних, определённых для каждой строки массива, одной формулой? Иными словами, как получить результат в O9 и O10 без доп. столбцов?

Финальная версия во вложении - за формулы в P9:P10 спасибо Ігор Гончаренко!
Чем заменить функцию ПОСЛЕД()?
 
Всем привет!
Что-то замкнуло меня с созданием диаграммы на основе формул.
- РЯД(;Лист1!$F$3:$F$12;Лист1!$G$3:$G$12;1) - работает.
- РЯД(;{1;2;3;4;5;6;7;8;9;10};{0,5;0,5;0,5;0,5;0,5;0,5;0,5;0,5;0,5;0,5};1) - работает.
- РЯД(;ТРАНСП(ПОСЛЕД(10));ТРАНСП(ПОСЛЕД(10;;$D$29;0));1) - ожидаемо не работает.
Функция ПОСЛЕД есть только в Office 365 и OneDrive - желательно бы заменить...
Вот только как, сходу не соображу.
UDF для конвертации персидской даты в григорианскую
 
Доброго времени!

Нужна Ваша помощь с написанием UDF для конвертации персидской даты в григорианскую. Точнее надо заменить функцию
Код
toGregorianDateObject(jy As Long, jm As Long, jd As Long) на GDate(Cell)
, где Cell - ссылка на ячейку.
С уважением.

Во вложении финальная версия файла. Всем спасибо!
Изменено: Acid Burn - 04.06.2023 15:35:36 (Добавлена функция Pers2Greg)
Динамический выпадающий список с сортировкой по критерию
 
Всем привет!

В серое поле нужно внести список "Позиций" из таблицы (столбец D:D) с сортировкой по номеру (столбец E:E).
Положение поля со списком может меняться - это учитывает имя Data_List.
Положение таблицы может меняться, а список строк дополняться - это учитывает дин. диапазон Data.
Названия позиций и их номера могут меняться, также номера могут содержать пустоты ("") - список должен перестроиться с исключением пустот.

Как сделать?

Upd: во вложении - финальная версия, спасибо БМВ!
Изменено: Acid Burn - 16.10.2019 23:47:45
Связанные списки Да/Нет. При выборе одного из вариантов остальные отклонить
 
Доброго времени!

В примере есть 4 ячейки, которые можно отметить, как "Да" или "Нет" ("✔" или "х").
Сейчас списки "Да/Нет" не связаны, т.е. возможны любые комбинации (4 "Да", 4 "Нет" и т.д.).
Нужно сделать так, что, если кому-то поставлено "Да", остальные 3 автоматически становятся "Нет".

Нельзя объединять 4 варианта в 1 список - всё должно быть на виду (что-то типа анкеты).
Нельзя использовать VBA и элементы управления - "анкета" должна работать в Облаке.
Что можно сделать? Условное форматирование / формат ячейки / формула массива?

С уважением.
Изменено: Acid Burn - 16.10.2019 00:46:12
Многопоточность в VBA
 
Всем привет!

Алгоритм действий пользователя:
- Заполняем столбец "РЕЖИМ ОЗУ", графы "ОБЪЁМ ОЗУ" и "АЛГОРИТМ СЖАТИЯ"
- Складываем необходимые для теста утилиты и файлы в папку "(tools)" рядом с Brut-4.xlsm
- Растягиваем таблицу "ПОДБОР" (при необходимости)
- Жмём кнопку "СТАРТ", далее работает макрос

Алгоритм действий макроса:
- Макрос группами (пулами) запускает алгоритмы, указанные в ячейке [M2]
ч/з утилиту procprofile32.exe, группа 1:
procprofile32 -r7b -b -u nz.exe a -cc -m8000m 8000.nz Test.srep >> 8000.txt
procprofile32 -r7b -b -u nz.exe a -cc -m6500m 6500.nz Test.srep >> 6500.txt
procprofile32 -r7b -b -u nz.exe a -cc -m500m 500.nz Test.srep >> 500.txt
(в результате будут созданы файлы 8000.nz+6500.nz+500.nz, 8000.txt+6500.txt+500.txt).
- Далее из txt-файлов макрос считывает значения ОЗУ+РАЗМЕР+ВРЕМЯ в Brut-4.xlsm и сохраняет Brut-4.xlsm
- Затем макрос удаляем *.nz+*.txt и запускаем следующий пул (группу) тестов:
procprofile32 -r7b -b -u nz.exe a -cc -m7900m 7900.nz Test.srep >> 7900.txt
procprofile32 -r7b -b -u nz.exe a -cc -m6400m 6400.nz Test.srep >> 6400.txt
procprofile32 -r7b -b -u nz.exe a -cc -m700m 700.nz Test.srep >> 700.txt
и т.д.

Тестовые файлы, внутри Brut-4.xlsm есть Sub test() - моя заготовка и Sub bedvit() - заготовка bedvit.

Поможете сделать?

Upd: перенесено в раздел "Работа".
Изменено: Acid Burn - 17.10.2019 23:47:39
Расчёт числа параллельных процессов
 
Всем привет!
Задача - провести 50 тестов, каждый из которых занимает на 100 МБ больше памяти, чем предыдущий.
То есть тест 1 - 500 МБ, 2 - 600 МБ, 3 - 700 МБ, ..., 50 - 5400 МБ. Всего памяти - 5500 МБ.
По логике вначале можно запустить 6 тестов параллельно (суммарно 4500 МБ).
Далее 4(5000)--3(4800)--2(3700)--2(4100)--2(4500)--2(4900)--2(5300) и ещё 27 тестов по одиночке (2800-5400).
Вопрос - формула/UDF, позволяющая рассчитать число тестов, которое я могу запустить параллельно
и расходуемую при этом память?
Изменено: Acid Burn - 08.09.2019 13:42:32
Ранг по 5 критериям
 
Всем привет!
Помогите наглядно ранжировать данные по 5 критериям (столбцам) при наличии пустых строк.
В столбце A попробовал ввести вес критериев (0,35-0,35-0,1-0,1-0,1) и использовать функцию РАНГ.
Получилось 32 - лучший результат, 01 - худший: не наглядно.
Что-то ещё можно придумать?

UPD: в столбце B сделал ранг через СУММПРОИЗВ и условное форматирование по принципу светофора.
Вышло наглядно - 5 наилучших ("зелёный"), 5 запасных ("жёлтый") и прочий хлам ("красный").

На этом тема закрыта. Надеюсь, кому-то пригодится. Всем добра!
Изменено: Acid Burn - 01.09.2019 14:29:34
Очистка текста по маске [UDF]
 
Всем привет!
Помогите, пожалуйста, формулой, позволяющей выделить из текстовой строки номер версии и дату релиза программы.
Сделал.
Просьба доработать функцию LDate - хотел вставить её в строку 63 (iDate = ), но она не может переварить входные данные.
Сделал.
Просьба по возможности оптимизировать время выполнения.
С уважением.
Изменено: Acid Burn - 20.01.2019 15:39:38
Конвертер дат [UDF]
 
Всем привет!
Нужна функция конвертации дат, записанных в разных форматах на английском и русском языках, в формат ГГГГ-ММ-ДД.
Начал просчитывать разные варианты формулами, но понял, что предусмотреть все форматы и свести в единую UDF не смогу.
Может у кого есть наработки?
Изменено: Acid Burn - 30.12.2018 19:09:50
Замена единиц в тексте: первую заменить на x32, вторую на x64 и т.д.
 
Всем привет!

A1=1;1;1;1
B1={=ПОДСТАВИТЬ(A1;{"1":"1":"1":"1"};{"x32":"x64":"w05":"w06"})}

Результат B1=x32;x32;x32;x32. Как получить B1=x32;x64;w05;w06?
Вариант ПОДСТАВИТЬ(A1;{"1":"1":"1":"1"};{"x32":"x64":"w05":"w06"};{1:2:3:4}) не работает...

С уважением.
Изменено: Acid Burn - 26.12.2018 11:54:46
Несколько гиперссылок в одной
 
Всем привет!

Нужна UDF, позволяющая объединить несколько гиперссылок в одной ячейке.
Желательный синтаксис: =Megalink("Адрес1,Адрес2,Адрес3,Адрес4";"Ссылка"), где "," = Alt+Enter (в идеале).
На HTML можно написать так:
Код
<html xmlns="https://www.w3.org/1999/xhtml">
  <head>
    <script type='text/javascript'>
    //<![CDATA[
        function LINKNAME() {
        var http = "https://google.ru/";          var win1 = window.open(http);
        var http = "https://yandex.ru/";          var win1 = window.open(http);
        var http = "https://www.planetaexcel.ru"; var win1 = window.open(http);
        var http = "https://2gis.ru/";            var win1 = window.open(http);}
    //]]>
    </script>
  </head>
  <body><a rel="nofollow" href="javascript:LINKNAME()">Ссылка</a></body>
</html>
Как сделать на VBA?
Изменено: Acid Burn - 19.12.2018 12:40:16
Выделить в [B:B] ячейки, содержащие значения из [D:D]
 
Всем привет!
Как выделить в [B:B] ячейки, содержащие значения из [D:D] с помощью условного форматирования?
С уважением.
Мультиязычная форма на базе CSV
 
Привет, Планета!
Во вложении - файл с UserForm, интерфейс которой автоматически переводится сервисом Yandex-переводчик.
Кто может сделать, чтобы перевод выводился не на лист Excel, а в файл Language.csv по адресу Thisworkbook.Path?
Заранее благодарю!
Мультиязычная форма на базе XLS
 
Здравствуйте!

Нужно сделать возможность переключения языка интерфейса в UserForm.
Перевод - на листе Lang в Excel, позже прикручу function для перевода через Google Translate.
При выборе в Combobox0 "Rus" всё должно выбираться из столбца B, при выборе "Eng" - из столбца C и т.д.
Как это сделать? И можно ли ещё как-то упростить/улучшить заполнение формы?

Пример во вложении.
Страницы: 1 2 3 След.
Наверх