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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 23 След.
изменение цвета строки при смене данных в колонке, изменение цвета строки при смене данных в колонке
 
Переписал код на массивы, может будет чуток быстрее работать. Код срабатывает только на изменение значения в первом столбце
Код
Private Sub get_color(dict As Object)

Dim i As Long, arr As Variant
Dim color As Long, upperbound As Long, lowerbound As Long
Set dict = CreateObject("Scripting.Dictionary")
With ActiveSheet

    upperbound = 15983321 ' нижняя граница цвета
    lowerbound = 15970000 ' верхняя граница цвета
    
    arr = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
    
    For i = 2 To UBound(arr, 1)
        If .Cells(i, 1).Interior.color = 16777215 Then
            If Not dict.exists(arr(i, 1)) Then
                color = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) ' случайный цвет
            End If
        Else
            color = .Cells(i, 1).Interior.color
        End If
        
        If Not dict.exists(arr(i, 1)) Then
            dict.Add arr(i, 1), color
        Else
            dict(arr(i, 1)) = color
        End If
    Next i
    
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub

Static dict As Object
If dict Is Nothing Then Call get_color(dict)

Target.EntireRow.Interior.color = dict(Cells(Target.Row, 1).Value)

End Sub

Изменено: artemkau88 - 15.08.2025 15:12:20
изменение цвета строки при смене данных в колонке, изменение цвета строки при смене данных в колонке
 
Мария Мария, добрый день!
Вариант макросом (открываем книгу->включить макросы->Alt+F11->смотрим в окне "Project" лист1->проваливаемся в него и смотрим код)
Код нужно будет вставить в модуль листа Вашей книги
Код:
Код
Option Explicit
Private Sub get_color(dict As Object)

Dim i As Object, color As Long, upperbound As Long, lowerbound As Long
Set dict = CreateObject("Scripting.Dictionary")
With ActiveSheet

    upperbound = 15983321 ' нижняя граница цвета
    lowerbound = 15970000 ' верхняя граница цвета
    
    For Each i In .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
        If i.Interior.color = 16777215 Then
            If Not dict.exists(i.Value) Then
                color = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) ' случайный цвет
            End If
        Else
            color = i.Interior.color
        End If
        
        If Not dict.exists(i.Value) Then
            dict.Add i.Value, color
        Else
            dict(i.Value) = color
        End If
    Next i
    
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Static dict As Object

If dict Is Nothing Then Call get_color(dict)
Target.EntireRow.Interior.color = dict(Cells(Target.Row, 1).Value)

End Sub
как сложить данные по столбцу в человеках, литрах, ящиках?, как сложить данные по столбцу в человеках, литрах, ящиках?
 
Дмитрий Дегтяренко, добрый день!
Во вложении вариант пользовательской функцией.
Первый параметр - диапазон для суммирования, вторым - критерий: человеки, литры, см, и т.п.
Код
Function countWithRegEx(dataRange As Range, criteria As String) As String
Dim i As Range, totalSumm As Double
    totalSumm = 0
    With CreateObject("VBScript.Regexp")
        .Global = False
        .MultiLine = False
        .IgnoreCase = False
        .Pattern = "\d+\,?\d*"
        For Each i In dataRange
            If .test(i.Value) Then totalSumm = totalSumm + CDbl(.Execute(i.Value)(0))
        Next i
        
    End With
    countWithRegEx = CStr(totalSumm) & " " & criteria
End Function
Чистка символов, Оставить в ячейке только нужные данные
 
Артём Москвитин, добрый день!
Вариант пользовательской функцией с использованием регулярных выражений (см столбец B):
Код
Function regexExtract(cell As Range) As String
    With CreateObject("VBScript.Regexp")
        
        .Pattern = "[A-Z]{2}\-?[A-Z0-9]+"
        .Global = False
        .MultiLine = False
        .Ignorecase = False
        
        If .test(cell) Then regexExtract = .Execute(cell)(0): Exit Function
        
    End With
    
    regexExtract = "without matches"
End Function
Удаление текста до и после символа одновременно, Нужно оставить часть текста до и после определённого символа
 
Можно регулярками.
Если нужно макросом, то см. код ниже.
Работает на активном листе и вытаскивает нужное во второй столбец (предполагается, что столбец у Вас один и он 1)
Код
Sub test()
        Dim s as string
        Dim arr
        Dim i as long
        With ActiveSheet
            arr = .cells(1,1).CurrentRegion
            for i = Lbound(arr, 1) to Ubound(arr, 1)
                .cells(i,2) = split(arr(i,1), "_")(1)
            next i
        End With
End Sub
Изменено: artemkau88 - 11.05.2025 17:23:37
Макрос на автоматическое заполнение ТН
 
Бюджет? Сроки?
Макрос на автоматическое заполнение ТН
 
aleksandrshleikin, добрый день!
Бюджет? Сроки?

Правильно ли я понял ТЗ, что по каждой строке реестра создается новая накладная?
Спасибо!
Изменено: artemkau88 - 06.02.2025 08:33:40
Автоматический перенос данных
 
пишу в личку
обменялись
Изменено: artemkau88 - 24.01.2025 10:48:46
сводная через vba с использованием формы
 
Спасибо Большое Portolomeo!
Было очень приятно работать. Четкое ТЗ. На все вопросы оперативно и терпеливо отвечал.
Четкая оплата.

Рекомендую к сотрудничеству.
сводная через vba с использованием формы
 
Portolomeo, добрый день!
Написал Вам в личные сообщения
В работе
обменялись
Изменено: artemkau88 - 10.01.2025 13:14:09
Вывод данных из таблицы в форму, Помощь в автоматизации заполнения графиков вакцинации.
 
написал в личные сообщения.
Не занимаю. Автору темы написал в личные сообщения
Изменено: artemkau88 - 28.12.2024 09:30:28
Вывод данных из таблицы в форму, Помощь в автоматизации заполнения графиков вакцинации.
 
capybarasan, добрый вечер!
Если вопрос потерпит до завтра, то смогу с утра посмотреть и выслать Вам свои предложения и черновой вариант работы.
Если нет, то заказ не занимаю. Спасибо!
Изменено: artemkau88 - 27.12.2024 19:35:22
Изменить точку на запятую при трансляции данных
 
novinky, добрый день!
Думаю, что нужно посмотреть справку по VBA по методу Range.Replace и XlLookAt
Табель учета работы техники и водителей
 
RegionNikita, пишу в личные сообщения.
Отправил набросок (половину работы) в личные сообщения на форуме.
Изменено: artemkau88 - 13.12.2024 14:58:05
Табель учета работы техники и водителей
 
Sanja, прошу прощения. Пошел исправляться.
Табель учета работы техники и водителей
 
RegionNikita, не претендую.
Я только хотел выразить свое виденье Вашей системы учета.
Думаю, что работа не на одну неделю (со всеми нюансами).
Изменено: artemkau88 - 13.12.2024 13:30:50
Антивирус для ПК в 2024 г., Выбор антивируса.
 
asesja, понял Вас. :)
Антивирус для ПК в 2024 г., Выбор антивируса.
 
asesja, так как бэ, если используете Windows, то он по умолчанию с ней поставляется. Если не секрет, чем не подошел?
Антивирус для ПК в 2024 г., Выбор антивируса.
 
asesja, здравствуйте!
Как вариант, если используете Windows, то пользоваться встроенным антивирусом от Microsoft, а файлы проверять на сервисе VirusTotal
Как регулярным выражение удалить все после последней двойной косой черты
 
Если будете искать в многострочном тексте, то

нужно заменить строку:
Код
.MultiLine = False
на:
Код
.MultiLine = True
Изменено: artemkau88 - 18.09.2024 07:37:03 (неуместное сообщение (исправил))
Не складывает цифры с пробелами
 
@Roks@, здравствуйте!
Очевидно, что заменить пробелы на пусто, т.е "" и складывать
Как регулярным выражение удалить все после последней двойной косой черты
 
dim284, добрый день!
Можно, например, так:
Код
(.*)\/\/
Обернуть в пользовательскую функцию и вытаскивать 1 захватывающую группу (которая в скобках)
Выражение означает: взять все символы до конца строки и уступить с конца строки все символы до 2 слешей, включая их, запомнить все, что совпало, кроме слешей в регулярном выражении, в группу 1
код:
Код
Function regex_execute(what, pattern) As String
'regex_execute -- функция для извлечения текста
'what - ячейка с исходным текстом
'pattern - паттерн - строка для регулярного выражения
With CreateObject("VBScript.Regexp")
    .Global = False
    .MultiLine = False
    .Ignorecase = True
    .pattern = pattern
    If .test(what) Then regex_execute = .Execute(what).Item(0).submatches.Item(0): Exit Function
End With
regex_execute = "нет совпадений"
End Function
Изменено: artemkau88 - 17.09.2024 18:20:01
VBA. Вывести максимальный из элементов набора, Нужна помощь в решении задачи с двухмерными массивами
 
ierehon1, приветствую!
Можно также использовать метод Inputbox объекта Application с указанием типа (параметр type) вводимого значения:
Код
A(i)= Application.InputBox("введите число:", type:=1)
И объявить массив массивом чисел, как писали коллеги выше.
Думаю, что более опытные товарищи подправят меня, если я ошибаюсь.
Выделить дубликаты в колонке, исключив из выделения некоторые значения, Vba
 
Hugo, большое спасибо! :)
Внес правки в код (ниже).
Михаил Л, второй вариант (теперь порядок слов в массиве исключений и регистр не имеет значения)

Скрытый текст
Изменено: artemkau88 - 02.07.2024 14:00:32
Выделить дубликаты в колонке, исключив из выделения некоторые значения, Vba
 
Михаил Л, только сейчас посмотрел свое предыдущее сообщение (#14)
Нюанс: предполагается, что значения в массиве исключений - exception_arr заносятся в алфавитном порядке (в комментариях в коде это прописал, так как функция бинарного поиска (использованнная в моём коде) работает только с отсортированным массивом), то есть:
Код
exception_arr = Array("абрикос","картошка","огурцы","помидоры")
Изменено: artemkau88 - 02.07.2024 10:47:03
Выделить дубликаты в колонке, исключив из выделения некоторые значения, Vba
 
Hugo, большое спасибо! Подправил код:
Скрытый текст
Выделить дубликаты в колонке, исключив из выделения некоторые значения, Vba
 
Михаил Л, только мой код выше при поиске не чувствителен к регистру. Если это важно, то внесу правки. Спасибо!
Выделить дубликаты в колонке, исключив из выделения некоторые значения, Vba
 
Hugo, спасибо большое за code review, внес правки в свой код!
Михаил Л, добавил функцию бинарного поиска и массив для исключений (в коде добавил соответствующие строки и комментарии).
Предполагается, что значения в массиве исключений - exception_arr заносятся в алфавитном порядке, то есть, например:
Код
exception_arr = Array("абрикос","картошка","огурцы","помидоры")
код:
Скрытый текст
Изменено: artemkau88 - 02.07.2024 10:44:23 (дополил сообщение)
Выделить дубликаты в колонке, исключив из выделения некоторые значения, Vba
 
Михаил Л, все таки выложу тут код с комментариями, вдруг пригодится Вам (запускаете макрос, выбираете диапазон (только с наименованием для поиска дубликатов)):
Скрытый текст
Выделить дубликаты в колонке, исключив из выделения некоторые значения, Vba
 
Михаил Л, здравствуйте!
Можно, например, использовать код с такой логикой:
1.загоняем всю таблицу в массив
2.создаем словарь типа - ключ=наименование, значение=количество повторов (при помощи цикла по массиву)
3. проходим циклом по словарю и, где количество значений больше 1, используя метод find в диапазоне значений для выделения, выделяем нужное.
Изменено: artemkau88 - 30.06.2024 15:37:29
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 23 След.
Наверх