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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 23 След.
Р7 офис, Импортозамещение аналог excel
 
Тоже досмотрел, докладчик тоже понравился, вопрос был действительно очень "коварный" )
Изменено: testuser - 30.04.2025 17:24:45
Р7 офис, Импортозамещение аналог excel
 
Цитата
sokol92 написал:
Функция Msgbox (или аналог) появилась?
Там как раз было про это, как показать сообщение, как включить режим дебаггера. Дальше я не смотрел.
Р7 офис, Импортозамещение аналог excel
 
Сегодня был вебинар по макросам https://vkvideo.ru/video-171524056_456239403
Автоматизация Excel: open-source набор для бизнес-задач, GitHub репозиторий с open source инструментами для Excel
 
Цитата
sergey_frolov написал:
это платформа, которая много чего умеет, поэтому важно понять что именно нужно
Да много чего накопилось, что можно было запушить (или как там) или форкнуть..
Цитата
sergey_frolov написал:
например, через perplexity.ai на русском языке вопросы про него позадавать
В общем-то и был похожий план, чтож не буду "мучить душу поэта" )
Автоматизация Excel: open-source набор для бизнес-задач, GitHub репозиторий с open source инструментами для Excel
 
Интересный "ресурс".
Цитата
sergey_frolov написал:
поэтому любые Ваши идеи и предложения
Например написать инструкцию, как пользоваться Гитом на минималках, возможно вы используете какую-то автоматизацию. Гит продвинутая вещь, и информация про него всегда сложное, а такого чтобы просто описания как загрузить, обновить, сделать зеркало (что-то меня понесло) один файл.. было бы маст-хев просто.
Изменение массива, являющегося значением Dictionary, Правильный способ изменить значение Dictionary, которое является динамическим массивом
 
Цитата
Сергей написал:
vba это весьма странный и нелогичный язык (после работы с gs от google).
Это наоборот логично, что процедура передачи ссылки обозначается чуть по другому, чем простое присвоение. "Gs" (без гугл) сам по себе это тоже очень странный язык, об этом говорят сплошь и рядом.
Как сделать проигрывание gif на листе эксель бесконечным
 
visors16, у меня работает на Win 8.1 гифка играет без останова. Может быть в более поздних версиях Windows что-то поменялось и вызов таких функций как mouse_event больше не определяется как активность пользователя. Тут я уже врядли подскажу
VBA. Две переменные double с одинаковыми значениями не равны друг другу, в чем подвох?)
 
Цитата
dhead написал:
оба значения вроде как совпадают.
Но на самом деле у них разная бинарная структура. С этим можно справиться если приводить оба значения к строке перед сравнением.
Как сделать проигрывание gif на листе эксель бесконечным
 
Цитата
testuser написал:
Что можно сделать - сообщить системе об активном состоянии с помощью vba
Это неверный вариант. Вот рабочий вариант - имитация активности пользователя с помощью эмуляции минимального движения мыши. Код нужно поместить в модуль листа.
Код
Option Explicit
Private Enum MouseEventFlags
    MOUSEEVENTF_MOVE = 1
End Enum
Private Declare PtrSafe Sub mouse_event Lib "user32" ( _
        ByVal dwFlags As MouseEventFlags, _
        ByVal dx As Long, _
        ByVal dy As Long, _
        ByVal dwData As Long, _
        ByVal dwExtraInfo As LongPtr)

Private Const Interval As Date = #12:00:29 AM# 'интервал срабатывания тймера (29 секунд)
Private NextTime As Date
Private blAnimationOn As Boolean
'
Sub KeepingAnimation()
    If blAnimationOn Then
        'каждые 29 сек. вызывает имитацию активности пользователя (небольшое колебание указателя мыши)
        NextTime = NextTime + Interval
        Application.OnTime NextTime, "Лист1.KeepingAnimation"
        DoEvents
        mouse_event MOUSEEVENTF_MOVE, 1, 0, 0, 0
        mouse_event MOUSEEVENTF_MOVE, -1, 0, 0, 0
    End If
End Sub
'включаем таймер при активации листа
Private Sub Worksheet_Activate()
    blAnimationOn = True
    NextTime = Now + Interval
    Application.OnTime NextTime, "Лист1.KeepingAnimation"
End Sub
'отключаем таймер при деактивации листа
Private Sub Worksheet_Deactivate()
    blAnimationOn = False
End Sub
Изменено: testuser - 30.03.2025 12:52:25
Как сделать проигрывание gif на листе эксель бесконечным
 
Скорее всего это работает так. Компонент Эксель, который проигрывает gif-анимацию фиксирует активность пользователя, и если в течение 30 сек. не происходит какой-либо активности - прекращает проигрывание картинки. Что можно сделать - сообщить системе об активном состоянии с помощью vba. Для этого есть специальные api-функции (не помню точно какие), которые позволяют установить специальный флаг активности в системе. Такой флаг устанавливают, как правило, все программы, которые проигрывают какое-то медиа. Допустим в браузере проигрывается какое-то медиа - видео, аудио или даже Gif-анимация. Браузер при этом устанавливает в системе флаг постоянной активности. При этом все программы, фиксирующие активность/неактивность пользователя будут "видеть" постоянную активность. Допустим программа, включающая заставку экрана, не включает заставку, когда открыт браузер и в нем проигрывается гифка.
Изменено: testuser - 30.03.2025 05:21:53
Как сделать проигрывание gif на листе эксель бесконечным
 
Попробуйте поиграться с видимостью объекта рисунка если сработает, то можно запускать таймер через каждые 30 сек.
Какой формулой можно вернуть букву столбца?
 
Код
Function NumToLiter(ByVal lNum As Long) As String
    Const Base& = 26
    Dim lTmp&
    Do
        lTmp = (lNum - 1) \ Base
        NumToLiter = ChrW(lNum - lTmp * Base + 64) & NumToLiter
        lNum = lTmp
    Loop While lNum
End Function
как включить ускоренную многопоточную x64 работу vba кода?, vba
 
KUDRIN, в vba нет базовой поддержки многопоточности, но можно запускать несколько экземпляров Excel, организовав взаимодействие между их vba-средами, но это не про использование vba-udf, это надо делать макросами и надо чутка в этом понимать, или хотябы стремиться )
Чем можно просмотреть содержимое файла Word?
 
Xml удобно просматривать в браузере, возожно для этого нужно включить режим просмотра кода (F12) не помню точно
Выбор оптимальных данных, Двухмерный массив анализ данных
 
Цитата
Kimkim написал:
нужно подобрать четыре столбца значение Ложь в которых будет в максимальном количестве строк.
Вопрос решается сортировкой столбцов по 1й строке, в которой у вас суммы значений. После сортировки по возрастанию первые 4 столбца и будут содержать "ложь" в макс. колличестве. Хотя если у вас единица означает ложь, тогда наоборот - последние 4 столбца.
Унаследовать данные с одного листа на другой в определенном диапазоне или поечеечно, нужно простое решение без макросов и т.д.
 
Ночной певец, я твой унаследник, лети, я песню допою...
Поделитесь, у кого есть, кодом Fn VBA, которая принимает коллекцию как аргумент и возвращает все ее ключи, (именно ключи, не значения)
 
Короче может это уже было но пусть будте. Действительно что-то там после 100000
Скрытый текст
Изменено: testuser - 13.01.2025 16:59:15
Поделитесь, у кого есть, кодом Fn VBA, которая принимает коллекцию как аргумент и возвращает все ее ключи, (именно ключи, не значения)
 
Словарь тоже можно сортировать при желании https://www.cyberforum.ru/visual-basic/thread1146688-page2.html#post6044230
Я сам не пробовал )
Поделитесь, у кого есть, кодом Fn VBA, которая принимает коллекцию как аргумент и возвращает все ее ключи, (именно ключи, не значения)
 
Цитата
Сергей Юрьевич написал:
Или призводительность сопоставима и переписав проект, избавив его от Dictionary, я не получу жесткой просадки производительности в части .keys() функционала? Вы не тестировали ее в плане перформанса?
Конкретно этот момент я не тестировал. Самописная функция выполняемая на vba, компилируемом в режиме p-code, вероятнее всего будет медленей функции из нативно-скомпилированной библиотеки. Плю на x64 vba добавляются жесткие тормоза на вызов Api-функций. Другой вопрос, на сколько это будет медленей, заметно ли это для глазу в каком-то конкретном случае, вы конечно можете это протестировать и т.о. внести какую-то ясность в этом моменте.
Цитата
БМВ написал:
Пробигало мнение что после 100 000 словарь
Я однажды экспериментировал с изобретением самописного словаря и заодно сравнил скорость заполнения + поиска в коллекции и словаре случайных строковых ключей. И у меня почему-то коллекции оказывалась сильно быстрей даже на куда меньшем количестве, т.е. 10к очень было заметно. Главное, я думаю учитывать разную реализацию поиска у коллекции - бинарное дерево, от словаря - хеш-таблица. Бинарное дерево лучше заполнять случайными данными, или если данные отсортированы, то заполнять их в случайном порядке. Для хэш-таблицы это не критично, но у нее (конкретно у Dictionary) есть другой недостаток - сама хэш-таблица внутри словаря имеет четко фиксированый размер, это понятно по тому факту, что после определенного колличества ключей, начинает заметно падать скорость поиска.
Поделитесь, у кого есть, кодом Fn VBA, которая принимает коллекцию как аргумент и возвращает все ее ключи, (именно ключи, не значения)
 
Цитата
Сергей Юрьевич написал:
опрос цены в плане производительности в сравнении с тем же Dictionary.
Как правило, хватает обычного Dictionary. Все зависит, конечно от задачи, но имхо лучше в алгоритме избегать такого сюжета, когда многократно получается массив ключей или значений, а реализовать это как-то по другому.
Изменено: testuser - 13.01.2025 07:09:53
Поделитесь, у кого есть, кодом Fn VBA, которая принимает коллекцию как аргумент и возвращает все ее ключи, (именно ключи, не значения)
 
Цитата
БМВ написал:
Разве что тс не указал, что в итоге он хочет видеть, коллекцию ключей или массив ключей или массив ключ,значение...
А может уж и ни чего не надо, как это не редко бывает )
Поделитесь, у кого есть, кодом Fn VBA, которая принимает коллекцию как аргумент и возвращает все ее ключи, (именно ключи, не значения)
 
Код
Option Explicit
Private Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As LongPtr)
#If Win64 Then
    Private Const ptrSz = 8
    Private Const varSz = 24
    Private Const collItemOffset = 40
#Else
    Private Const ptrSz = 4
    Private Const varSz = 16
    Private Const collItemOffset = 24
#End If
Private Const NullPtr As LongPtr = 0

Function ColKeys(Coll As VBA.Collection) As String()
    Dim i&, pItem As LongPtr, Key$, pKey As LongPtr
    Dim Ub&: Ub = Coll.Count - 1
    If Ub = -1 Then Exit Function
    Dim Keys$(): ReDim Keys(Ub)
    pKey = VarPtr(Key)
    pItem = ObjPtr(Coll)
    For i = 0 To Ub
        CopyMemory pItem, ByVal pItem + collItemOffset, ptrSz
        CopyMemory ByVal pKey, ByVal pItem + varSz, ptrSz
        Keys(i) = Key
    Next
    CopyMemory ByVal pKey, NullPtr, ptrSz
    ColKeys = Keys
End Function

Private Sub ColKeysTest()
    Dim i&, Coll As New Collection
    Dim Keys$()
    
    Coll.Add "item1", "key1"
    Coll.Add "item2", "key2"
    Coll.Add "item3", "key3"

    Keys = ColKeys(Coll)
End Sub
Изменено: testuser - 12.01.2025 11:01:01
Выбор значений внутри числового диапазона
 
Код
Private Sub Пример()
    Dim lAr&()
    lAr = Распределение(30, 60, 2, 8)
End Sub
Function Распределение(Min!, Max!, Interval!, Count!)
    Dim i!, l&, lAr(), Stp!
    ReDim lAr(1 To Count, 1 To 1)
    Stp = (Max - Min) / (Count - 1)
    For i = Min To Max Step Stp
        l = l + 1
        lAr(l, 1) = ((i - 1) \ Interval) * Interval + Interval
    Next
    Распределение = lAr
End Function
Изменено: testuser - 15.12.2024 13:25:47
VBA. Обойти ограничение на длину пути к файлу в 255 символов
 
Проверил сейчас, можно "символическую ссылку" на сетевую папку создать, но для этого нужно повышение прав. Junction тоже создается для сетевой папки, без повышения прав, но не работает.
Как ускорить миллионы вычислений, ~20млн. ячеек с переменными сильно тормозят
 
По имеющемуся примеру, такой примерно макрос будет
Код
Sub ВычислениеФормул()
  Dim arInp(): arInp = Лист1.Range("D3:D12").Value
  Dim перем1#: перем1 = arInp(1, 1)
  Dim перем2#: перем2 = arInp(2, 1)
  Dim перем3#: перем3 = arInp(3, 1)
  Dim перем4#: перем4 = arInp(4, 1)
  Dim перем5#: перем5 = arInp(5, 1)
  Dim перем6#: перем6 = arInp(6, 1)
  Dim перем7#: перем7 = arInp(7, 1)
  Dim перем8#: перем8 = arInp(8, 1)
  Dim перем9#: перем9 = arInp(9, 1)
  Dim перем10#: перем10 = arInp(10, 1)
  Dim arRes()
  ReDim arRes(1 To 3, 1 To 1) 'arRes(1 To 1000000, 1 To 1)
  
  'Комментарий для первой формулы (комбинации)
  arRes(1, 1) = перем1 * перем2 * перем3
  
  'Комментарий для второй формулы
  arRes(2, 1) = перем1 * перем10 * перем9 / перем7
  
  'Комментарий для 3ей формулы
  arRes(3, 1) = перем6 + перем3 + перем9
  
  '***
  
  'Вывод результата на лист (Лист2)
  Лист2.Cells(1).Resize(UBound(arRes)).Value = arRes
End Sub
Как ускорить миллионы вычислений, ~20млн. ячеек с переменными сильно тормозят
 
A132, вы бы привели реальный небольшой рабочий пример (с вымышленными данными) того, как у вас это реализовано. Тогда было бы более понятней о чем говорить, и вам бы могли дать более внятные рекомендации.
Как ускорить миллионы вычислений, ~20млн. ячеек с переменными сильно тормозят
 
Цитата
A132 написал:
20млн. ячеек - заняты все строки практически до конца (около 900 000) и в несколько столбцов
Это не надо хранить в Экселе. Файлы Эксель представляют из себя запакованные zip-архивы, и при каждом открытии затрачивается время на распаковку, а при закрытии/сохранении на упаковку данных. Плюс числовые целочисленные данные в Экселе обязательно преобразуются в числа с плавающей точкой, а при сохранении, числа еще преобразуются в текст. Столько данных лучше выгружать в отдельный  файл и считывать их от туда когда требуется.
Изменено: testuser - 01.12.2024 15:35:32
Непонятное закрытие темы про "Функцию Power Query"
 
Цитата
написал:
П.С. И ник свой смените
В данном случае очень поддерживаю! Ник 4ikotillo это полный зашквар!
Изменено: testuser - 30.11.2024 07:24:31
Непонятное закрытие темы про "Функцию Power Query"
 
nilske, выражаю Вам высокую благодарность за столь ценное замечание, хорошо что есть столь ценные граждане на данном форуе, которые нходятся в тщательной бдительности, и в случай чего могут сделать незамедлительное не млоценное замечание, аль пожаловаться куда следует, если уж де установленный закон не блюдется  в должной и рьяной безпрекословности. Ходатайствую вам на медаль! )
Непонятное закрытие темы про "Функцию Power Query"
 
Я всетаки скажу. У вас тут не здоровая дрочка (иного слова не мог подобрать) за никнеймы. Мне по большей части все равно, но кто-то должен это сказать. Вы ж сдесь в основном зубры, и должны помниь времена icq и т.д. Я понимаю когда человек вставляет пароль вместо имени это зашквар, но что плохого в ksen14ka? ) https://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=168494&TITLE_SEO...
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 23 След.
Наверх