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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.
Регулярные выражения (RegExp) в Excel
 
Mik1965, добрый день!
В функции RegexExtract паттерн лучше заменить на (если ищем в начале строки):
Код
^ *[OО]{3}\b ' искать в начале строки за которым следует 0 или больше пробельных символов. О русская и английская (вдруг опечатка) за которым следует граница слова
и
Код
^ *ИП\b ' искать в начале строки за которым следует 0 или больше пробельных символов. ИП в начале строки за котрым следует граница слова
указывать [ООО] не имеет смысла, так как это указание диапазона символов, то есть [ООО] == О{3}. По ИП тоже самое, а то получается, что ищем любую букву из диапазона [ИП] и она совпадет и с выражением ИИ и ПП тоже. Лучше использовать ИП просто как строковый литерал (буква И, за котрой сразу следует буква П). После ИП и ООО также, на мой взгляд лучше добавить символ границы слова, так как в противном случае паттерн ^ИП совпадет в начале строки и с выражением, например: ИПартюхов

По основному вопросу: может после открытия файла Вы не включили макросы? Так как RegexExtract  это пользовательская функция.
Изменено: artemkau88 - 28.03.2024 12:07:05
Объединение столбцов в один
 
Раз уж написал, то тоже выложу тут:
Скрытый текст
Объединение столбцов в один
 
Diana@1, здравствуйте!
Без файла-примера сложно сказать.
Приложите файл-пример с исходными данными и примером результата.
Спасибо!
Изменено: artemkau88 - 02.03.2024 10:48:07
Вложенные циклы долго работают, Оптимизация
 
БМВ, большое Вам спасибо!  Сегодня попробую.
Попробовал на 99000 строк. Выскочила ошибка (см. вложение).
При изменении диапазона до меньшего размера (например до 60000, либо явного указания всего столбца, типа Лист1$"A:K"), ошибка не выскакивает.
Excel 2007 версии
Спасибо большое за ответ! :)
Изменено: artemkau88 - 01.03.2024 17:33:14
Вложенные циклы долго работают, Оптимизация
 
БМВ, спасибо! Правильно ли я понял, что это ограничение для диапазона для запроса SQL? Спасибо!
Изменено: artemkau88 - 01.03.2024 13:51:43
Вложенные циклы долго работают, Оптимизация
 
БМВ, да, спасибо! Я не заметил, что у автора темы тот же код (конец дня видно сказался)
Изменил алгоритм на SQL запрос в сообщении выше
Изменено: artemkau88 - 29.02.2024 20:47:29
Вложенные циклы долго работают, Оптимизация
 
вариант SQL запросом:
Скрытый текст
Изменено: artemkau88 - 01.03.2024 21:11:42
Перенос файла для macOS
 
Евгений Смирнов, возможно, но думаю, что нужно дождаться реакции автора темы на сообщение от Модератора. А то все по "шапке" получим. :)  
Перенос файла для macOS
 
Sanja, прошу прощения, что ответил не в той ветке.
Мамкин Сынок, я имел в виду не файл с макросом, а снимок экрана - снимок ошибки со строкой кода (которая подсвечивается желтым и саму ошибку - всплывающее окно)
Перенос файла для macOS
 
Мамкин Сынок, я не специалист по МАС, но все же.
Если нажать кнопку "debug" во всплывающем окне ошибки, то какую строку кода подсвечивает в редакторе кода. Можете выложить скрин? И что за ошибка возникает - её имя (тоже можете выложить скрин?)
Перенос файла для macOS
 
Евгений Смирнов, возможно. Не особо вдавался в логику. Спасибо! :)  
Перенос файла для macOS
 
Раз уж подправил, тоже выложу код.
Если угадал логику верно, то см. файл
Перенос файла для macOS
 
Мамкин Сынок, у Вас в коде используется объект "Словарь" - "Scripting.Dictionary". Нужно его заменить на объект коллекции и внести соответствующие правки в код
Перенос файла для macOS
 
Мамкин Сынок, приветствую!
Замените словари на коллекции. Думаю, этого будет достаточно.
Макрос разложить строки по столбцам, Нужно строки раскидать по строкам
 
Третий вариант. Вынес выгрузку на лист за цикл и добавил форматирование таблицы с результатом.
Макрос разложить строки по столбцам, Нужно строки раскидать по строкам
 
Chingiz Xan, сегодня добавил подробные комментарии в код (см. моё сообщение выше #5) и обновил файл.
Изменено: artemkau88 - 28.02.2024 10:30:56
Как убрать из ячейки лишние электронные адреса
 
Без файла-примера сказать сложно. Вариант пользовательской функцией на регулярках.
В обычный модуль книги вставьте функцию ниже. Использование, если данные в столбце А, то в столбец В1 вставить и протянуть:
Код
 =regexExtract(A1)
Код
Function regexExtract(s As Range) As String
regexExtract = "None"
With CreateObject("VBScript.Regexp")
    .Global = False: .MultiLine = False: .pattern = "^[-a-z0-9_.]+\@[-a-z0-9_]+\.[a-z]+": .IgnoreCase = True
    If .test(s) Then regexExtract = .Execute(s)(0): Exit Function
End With
End Function
Изменено: artemkau88 - 25.02.2024 17:07:26
Макрос разложить строки по столбцам, Нужно строки раскидать по строкам
 
Убрал лишние массивы и переменные
Код:
Скрытый текст
Изменено: artemkau88 - 28.02.2024 10:29:53
Макрос разложить строки по столбцам, Нужно строки раскидать по строкам
 
Chingiz Xan, добрый день!
Вариант на листе с именем tmp (потом измените на нужное)
Скрытый текст
В коде добавил комментарии для изменения имен листов с исходными данными и результатом
Изменено: artemkau88 - 25.02.2024 12:51:20 (Забыл точку во вспомогательном макросе. Обновил файл)
Список из ячеек, Формирования большого списка из списков в ячейках
 
Еще 2 варианта (с регулярками и без):
Скрытый текст
Скрытый текст
Изменено: artemkau88 - 24.02.2024 13:35:08
Макрос для сравнения нескольких ячеек.
 
Добрый день!

Вариант:

Скрытый текст
Изменено: artemkau88 - 24.02.2024 12:49:50
Объедить столбцы дат в месяц
 
lorents, добрый день!
Вариант SQL запросом (добавил комментарии в коде):
Скрытый текст
Изменено: artemkau88 - 17.02.2024 18:07:38
Разнести данные из сводной ведомости по датам, в отдельные листы
 
Не понял Вас
Повторю вопрос:  лист с именем "ведом." для чего?
Разнести данные из сводной ведомости по датам, в отдельные листы
 
Arsenyu, добрый день!
А лист с именем "ведом."  для чего?
Спасибо!
данные из подзаголовков в таблице перенести в отдельную колонку, аптекарская программа формирует отчет с группировкой колонок по аптекам, а нужно номера аптек перенести в отдельную колонку
 
Ещё вариант (с сортировкой до выгрузки на лист и проверкой, существует ли лист с результатом):
Скрытый текст
данные из подзаголовков в таблице перенести в отдельную колонку, аптекарская программа формирует отчет с группировкой колонок по аптекам, а нужно номера аптек перенести в отдельную колонку
 
вариант макросом:
Скрытый текст
Имя tmp можете поменять на нужное имя листа (он должен быть создан до запуска макроса). В коде именя листов выделил коментарием

При каждом запуске, макрос очищает ячейки на листе tmp и заполняет таблицу с результатом
Изменено: artemkau88 - 21.01.2024 13:00:19 (исправил код)
Удалить значения между двумя символами
 
Еще вариант (через ругулярки):
Код
Function invert_match(what As String) As String
invert_match = ""
With CreateObject("VBScript.Regexp")
    .Global = True: .MultiLine = True: .Pattern = "\<[^<]+?\>"
    If .test(what) Then invert_match = Trim(.Replace(what, "")): Exit Function
End With
End Function
Изменено: artemkau88 - 06.01.2024 16:09:52
Выбор уникальных значений по нескольким условиям
 
Можно макросом, например так (запускаете по Alt+F8):
Код
Sub drivers()
Dim i As Long, lr As Long
Dim arr As Variant, Dict As Object, key

With Worksheets("Лист1") ' Лист1 - имя листа с исходной таблицей (поменять на нужное)
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("A2:B" & lr)
End With
    Set Dict = CreateObject("Scripting.Dictionary")
    For i = LBound(arr, 1) To UBound(arr, 1)
        If arr(i, 2) <> "" Then
            If Not Dict.exists(arr(i, 1)) Then
                Dict(arr(i, 1)) = arr(i, 2)
            Else
                If Not if_item_exists(arr(i, 2), arr(i, 1), Dict) Then Dict(arr(i, 1)) = Dict(arr(i, 1)) & ";" & arr(i, 2)
            End If
        End If
    Next i
' выгрузка на лист
With Worksheets("Лист1") ' Лист1 - имя листа для выгрузки результата (тот же лист 8 столбец)
    lr = 1
    For Each key In Dict.keys()
        .Range("H" & lr) = key
        .Range("I" & lr) = Dict(key)
        lr = lr + 1
    Next key
End With
End Sub
Private Function if_item_exists(what, item, d As Object) As Boolean
Dim i As Variant
if_item_exists = False
For Each i In Split(d(item), ";")
    If i = what Then if_item_exists = True: Exit Function
Next i
End Function
Группировка строк Акта сверки по имени документа.
 
Добрый день!
Пишу в личку
Заказ свободен. Нет времени
Изменено: artemkau88 - 01.01.2024 15:01:10
Как ускорить макрос с проверкой условия, Как ускорить макрос с проверкой условия
 
Здравствуйте!
Вариант:
Код
Sub фильтрация()
Dim arr, lr As Long, i As Long
With Worksheets("БД") ' имя БД поменять на нужное имя листа
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("A9:C" & lr)
    For i = LBound(arr, 1) To UBound(arr, 1)
        ' имя таблицы СВОД в строке ниже поменять на нужное
        If arr(i, 3) = 0 Then ActiveSheet.ListObjects("СВОД").Range.AutoFilter Field:=3, Criteria1:="0"
    Next i
End With
End Sub
Sub снять_фильтр()
' имя БД поменять на нужное имя листа и имя таблицы СВОД поменять на нужное
Worksheets("БД").ListObjects("СВОД").Range.AutoFilter Field:=3
End Sub

Изменено: artemkau88 - 29.12.2023 17:40:50
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.
Наверх