По нажатию кнопки "Тест" макрос создаёт UserForm и размещает на ней скриншот. Размер UserForm указан в сантиметрах в [C5:C6], диапазон для скриншота в [C7]. Высота текста, строк и столбцов для оптимизации скриншота рассчитаны в [C8:C11]. В итоге на мониторе должна получиться картинка 1:1, чтобы её можно было измерить линейкой.
Увы, размеры UserForm, рисунка в UserForm и ячейки листа в Excel отнюдь не в сантиметрах. Пока наобум подобрал коэффициенты под свой 4K монитор - в режиме 2K с масштабом 100% норм. Помогите поставить вместо них обоснованные коэффициенты, чтобы работало на любом мониторе. PS: добавлена функция Screen, создание квадрата чётко 3х3 см и много всего интересного. ))
В столбце [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 или заменить её на формулу?
Всем привет! Помогите рассчитать координаты вершин прямоугольника, заданного высотой и координатами срединной линии. Пока угол поворота 0 (пример 1), всё работает. Если есть поворот (пример 2), результат не правильный. Пожалуйста, поправьте функцию. Файл во вложении. С уважением.
Добрый вечер! Помогите выбрать значения из всех ячеек всех листов книги Excel в словарь. Словарь надо отсортировать и вывести на лист Translate для дальнейшей русификации. Варианты из раздела "Приёмы" не подходят. Набросок кода с просторов Интернета в файле (модуль mTranslate) - выбирает лишь 193 строки. С уважением.
Помогите написать функцию/макрос для определения языка текстовых строк. Оказалось, что в 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?
Всем привет! Помогите ускорить загрузку программы с epg.it999.ru. Сейчас макрос работает 168,45 с. вместо желаемых пары секунд. )) Что можно сделать? С уважением.
Всем привет! Посмотрите, пожалуйста, Sub DWL в приложенном файле. На VirusTotal детект 4/62. Главное - Kaspersky Security Cloud (KSC) считает его Trojan-Downloader.Script.Generic. Если закомментировать код загрузки и/или распаковки - проблем нет, иначе - вирус. )) Писать батник для загрузки и распаковки и упаковывать в контейнер от BedVit не хочется. Что ещё можно сделать? С Уважением.
Всем привет! Нужно найти быстрый способ запуска командных файлов при клике ссылки в Excel. Во вложении 2 варианта реализации с использованием функции: 1) SuperLink: работает, но виснет при числе ссылок >4000. 2) SuperLink2 и Workbook_SheetBeforeDoubleClick: не работает. Истина где-то между этими двумя вариантами: а) либо выбросить из первой функции расчёты Friendly_Name (значок в ячейке), ScreenTip (подсказку при наведении), hide:: (режима скрытия окна консоли), mypath:: (режима определения пути, откуда запущена SuperLink) и упростить циклы для выполнения основной функции run:: (запуск командных файлов при клике) б) либо переписать вторую функцию, чтобы она заработала Нужна Ваша помощь!
Всем привет! Нашёл SuperLink - способ запуска командных файлов при клике гиперссылки в Excel. Это открывает кучу возможностей. Самое простое, наверное, открыть Excel-ссылку в плеере. Но когда этих ссылок >4000, пересчёт и сохранение файла занимают до получаса! Возможно также из-за того, что путь плеера и ID ссылок вынесены в переменные. Поделиться исходным файлом не могу, воссоздал что-то похожее. Как оптимизировать?
Здравствуйте! Совсем забыл геометрию. (( Дано: координаты A,C; длина AC=DB, AD=BC; угол ACB=CAD=90 градусов. Найти: координаты B,D. По сути надо найти координаты третьей вершины прямоугольных треугольников. Спасибо!
PS: Финальная версия файла во вложении, надеюсь, кому-то ещё пригодится.
Есть куча *.m3u* и *.asx, которые надо считать в Excel (Источник, Категория, Название, Ссылка, Сервер, Обложка, Статус). Все прочие имеющиеся в плейлистах данные надо разместить в столбце "Не классифицировано" для ручного анализа. После ручной доработки полученной таблицы надо создать новый набор *.m3u, взяв имена *.m3u из столбца Источник. В идеале - 2 кнопки ("Считать" и "Создать") и очень быстрый код, т.к. файлов и ссылок просто немерено. Формульный вариант парсера и тестовые плейлисты здесь.
Помогите осилить задачку: - есть таблица 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 с равномерным шагом.
Всем привет! Подскажите, как выбрать максимальное/минимальное из средних, определённых для каждой строки массива, одной формулой? Иными словами, как получить результат в 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 - желательно бы заменить... Вот только как, сходу не соображу.
В серое поле нужно внести список "Позиций" из таблицы (столбец D:D) с сортировкой по номеру (столбец E:E). Положение поля со списком может меняться - это учитывает имя Data_List. Положение таблицы может меняться, а список строк дополняться - это учитывает дин. диапазон Data. Названия позиций и их номера могут меняться, также номера могут содержать пустоты ("") - список должен перестроиться с исключением пустот.
В примере есть 4 ячейки, которые можно отметить, как "Да" или "Нет" ("✔" или "х"). Сейчас списки "Да/Нет" не связаны, т.е. возможны любые комбинации (4 "Да", 4 "Нет" и т.д.). Нужно сделать так, что, если кому-то поставлено "Да", остальные 3 автоматически становятся "Нет".
Нельзя объединять 4 варианта в 1 список - всё должно быть на виду (что-то типа анкеты). Нельзя использовать 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.
Всем привет! Задача - провести 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, позволяющая рассчитать число тестов, которое я могу запустить параллельно и расходуемую при этом память?
Всем привет! Помогите наглядно ранжировать данные по 5 критериям (столбцам) при наличии пустых строк. В столбце A попробовал ввести вес критериев (0,35-0,35-0,1-0,1-0,1) и использовать функцию РАНГ. Получилось 32 - лучший результат, 01 - худший: не наглядно. Что-то ещё можно придумать?
UPD: в столбце B сделал ранг через СУММПРОИЗВ и условное форматирование по принципу светофора. Вышло наглядно - 5 наилучших ("зелёный"), 5 запасных ("жёлтый") и прочий хлам ("красный").
На этом тема закрыта. Надеюсь, кому-то пригодится. Всем добра!
Всем привет! Помогите, пожалуйста, формулой, позволяющей выделить из текстовой строки номер версии и дату релиза программы. Сделал. Просьба доработать функцию LDate - хотел вставить её в строку 63 (iDate = ), но она не может переварить входные данные. Сделал. Просьба по возможности оптимизировать время выполнения. С уважением.
Всем привет! Нужна функция конвертации дат, записанных в разных форматах на английском и русском языках, в формат ГГГГ-ММ-ДД. Начал просчитывать разные варианты формулами, но понял, что предусмотреть все форматы и свести в единую UDF не смогу. Может у кого есть наработки?
Результат B1=x32;x32;x32;x32. Как получить B1=x32;x64;w05;w06? Вариант ПОДСТАВИТЬ(A1;{"1":"1":"1":"1"};{"x32":"x64":"w05":"w06"};{1:2:3:4}) не работает...
Нужна 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>
Привет, Планета! Во вложении - файл с UserForm, интерфейс которой автоматически переводится сервисом Yandex-переводчик. Кто может сделать, чтобы перевод выводился не на лист Excel, а в файл Language.csv по адресу Thisworkbook.Path? Заранее благодарю!
Нужно сделать возможность переключения языка интерфейса в UserForm. Перевод - на листе Lang в Excel, позже прикручу function для перевода через Google Translate. При выборе в Combobox0 "Rus" всё должно выбираться из столбца B, при выборе "Eng" - из столбца C и т.д. Как это сделать? И можно ли ещё как-то упростить/улучшить заполнение формы?