Sub TTTNNN() Dim re, arr1, n As Long arr1 = Range("P2:P" & Cells(Rows.Count, 16).End(xlUp).Row) Set re = CreateObject("VBScript.regExp"): re.Pattern = "(\d{7})[А-Я]{2}" For n = 1 To UBound(arr1) If re.test(arr1(n, 1)) Then arr1(n, 1) = re.Execute(arr1(n, 1))(0).SubMatches(0) Else arr1(n, 1) = "" Next Range("Q2:Q" & Cells(Rows.Count, 16).End(xlUp).Row).NumberFormat = "@" Range("Q2:Q" & Cells(Rows.Count, 16).End(xlUp).Row) = arr1 End Sub
Доброе утро. Подскажите в чем может быть проблема. Данный код не везде вытаскивает номер ТТН. Прикрепляю пример с кодом и данной проблемой. В некоторых ячейках после обработки остается пустое поле.
Добрый день. Нашел вот такой код на просторах интернета. Подскажите может кто его подправить?
ТекстДляПоиска = "шт" - как сдесь сделать перечисление? (но обязательно надо чтоб список значений нужно было вписывать в самом коде, а не на отдельном листе, или диапазоне). Пример: ТекстДляПоиска = "шт", "цена" все строки которые не содержат данные значения нужно удалить, включая пустые. Вхождение можно не точное. Заранее Благодарствую!
Код
Sub УдалениеСтрокПоУсловию2()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False ' отключаем обновление экрана
ТекстДляПоиска = "шт" ' удаляем строки с таким текстом
' перебираем все строки в используемом диапазоне листа
For Each ra In ActiveSheet.UsedRange.Rows
' если в строке найден искомый текст
If ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
' добавляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next
' если подходящие строки найдены - удаляем их
If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub
Добрый день. Нашел вот такой код на просторах интернета. Подскажите может кто его подправить?
ТекстДляПоиска = "шт" - как сдесь сделать перечисление? (но обязательно надо чтоб список значений нужно было вписывать в самом коде, а не на отдельном листе, или диапазоне). Пример: ТекстДляПоиска = "шт", "цена" все строки которые не содержат данные значения нужно удалить, включая пустые. Вхождение можно не точное. Заранее Благодарствую!
Код
Sub УдалениеСтрокПоУсловию2()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False ' отключаем обновление экрана
ТекстДляПоиска = "шт" ' удаляем строки с таким текстом
' перебираем все строки в используемом диапазоне листа
For Each ra In ActiveSheet.UsedRange.Rows
' если в строке найден искомый текст
If ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
' добавляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next
' если подходящие строки найдены - удаляем их
If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub
Нужно именно перебрать значения колонка уже заполнена значениями и тут нужна проверка если знаков в ячейке меньше 7 то добавить 0, если 7 и больше то ничего не делать. Количество строк всегда разное
Может кто подскажет почему не работает данный кусок кода?
Суть кода: в ячейке обрезало нули вначале значения где номера начинаются с 0. нужно восстановить значения в колоне "A". Если в ячейке символов меньше 7 то нужно подставить к значению в начало "0" в ту же ячейку.
Код
Sub Ze()
LR = Cells(Rows.Count, 1).End(xlUp).Row
For i = LR To 2 Step -1
str_test = Cells(i, 1).Value = Right(String(7, "0") & str_test, 7)
Next
End Sub
Msi2102, Почему-то данный код не хочет отрабатывать по всей колонке. только первую ячейку отрабатывает, а если указать точный диапазон, тогда работает (A1:A16). Можно ли как-то сделать чтоб определялась последняя заполненная ячейка в колонке. Оно вроде есть в примере, но не работает.
Необходимо из нескольких файлов excel в которых находятся одинаковые таблицы с разными значениями собрать данные в 1 файл excel. Вариант 1: осуществить поиск по строке №6 по названию ячейки и определить столбец и вставить данные с 7 строки и до конца со всех файлов в 1 файл и на один лист. Поиск колонок: Наименование, артикул, цвет и последующая вставка столбцов в 1 файл, поиск нужно произвести во всех файлах.
Добрый день. сделал импорт курсов валют, но не получается решить одну проблему. в ссылке нужно указывать дату в формате "YYYY-MM-DD".
есть переменная d , в которую попадают данные из input ( в input нужно ввести человеку дату 02.01.2023) нужно чтоб введенные данные преобразовались в в следующий формат 2023-01-02 и хранились в переменной d
желательно сделать замену следующих знаков ".", ",", "/" на "-" заранее благодарствую!
Сразу извиняюсь за грязный код, так как я учусь VBA =) Помогите пожалуйста, почему код не отрабатывает, но и не выдает ошибку, может кто знает в чем проблема и может подправить.
Суть кода в том, чтобы просуммировать 1 столбец, но если повторяются значения в нескольких столбцах, при этом если строки просумировались, а лишние удалились, в первом столбце через запятую сложить значения. Файл прикрепил с кодом.
Пример: Есть таблица из 10 колонок, которая имеет одинаковые данные наименование, шк, артикул, но к примеру разное количество. Данную таблицу необходимо собрать, удалить дублирующийся строки и просуммировать нужный столбец. Но часто бывает так что таблицы могут быть разные и находить одинаковые строки нужно к примеру по двум колонкам, или трем и так далее. Есть таблица 10 колонок, десятая колонка - ее надо к примеру нужно суммировать (это input "SUMM1", суть в том чтобы через инпут возможно было указать какую колонку нужно суммировать).
переменная "SRAV" - определяет по скольким колонкам будет производиться сравнение, 2, 3 или более, от этого значения должно будет зависеть какой цикл нужно запускать , сопоставление по двум колонкам и суммирование в определенной, или по трем. Переменные sravneni1,sravneni2,sravneni3 - нужны для того чтобы пользователь мог указать по каким колонкам нужно искать одинаковые значения и сравниваь.
вот цикл, который сам по себе отрабатывает хорошо без боксов.
Код
Application.ScreenUpdating = False
LR = Cells(Rows.Count, 1).End(xlUp).Row
For i = LR To 3 Step -1
For j = i - 1 To 3 Step -1
If Cells(i, 3).Value = Cells(j, 3).Value _
And Cells(i, 6).Value = Cells(j, 6).Value _
Then
Cells(i, 5).Value = Cells(i, 5).Value + Cells(j, 5).Value
Cells(i, 1).Value = Cells(i, 1).Value & "," & Cells(j, 1).Value
Rows(j).Delete
End If
Next
Next
Application.ScreenUpdating = True
Данный код находит одинаковые строки в колонках 3 и 6 и суммирует колонку 5, а в колонке 1, складывает значения через запятую (к примеру порядковый номер строки).
ИТОГ: Необходимо сделать следующим образом: Вывести инпут для пользователя и спросить в скольких столбцах будем искать одинаковые значения (по каким столбцам будем искать признаки для суммирования).
Если 2 ТО Вывести 2 инпута, где я смогу ввести номера колонок в которых будет проводиться сравнение одинаковых строк (Суммирование будет происходить если в двух строках и двух колонках будут одинаковые значения) Вывести инпут в котором я смогу указать какую колонку нужно суммировать. Если 3 ТО Вывести 3 инпута, где я смогу ввести номера колонок в которых будет проводиться сравнение одинаковых строк Вывести инпут в котором я смогу указать какую колонку нужно суммировать.
Подскажите пожалуйста каким образом можно вставить формулу в функцию?
Пример формул: =СЖПРОБЕЛЫ(ПСТР(A1;НАЙТИ(" ";A1)+1;НАЙТИ(",";A1)-НАЙТИ(" ";A1)-1)) ' Вытащить слово между двумя знаками пример между скобками. =СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(A9;" ";ПОВТОР(" ";99));99)) ' Оставить слово после последнего пробела
Идея такая, у меня есть txt файл с сложными формулами, которые иногда нужны в работе. Вот задумался, реально ли их перенести в пользовательские формулы, чтобы можно было вызывать эти формулы через знак равно?
Буду благодарен если, кто сталкивался с таким, покажет хотя бы пример.
Помогите решить задачку, на просторах интернета не смог найти нужный вариант.
Нужно собрать данные из нескольких txt файлов следующим образом.
к примеру в папке 2 txt файла в каждом по 5 строк. Нужно каждую строку из одного txt файла поместить в разные столбцы, следующий файл сделать тоже самое но с новой строки.
В результате должен получиться excel файл с заполненными 5 столбцами и двумя строками строчками.
Строк в файлах может быть разное количество, файлов в папке может быть разное количество.
написал: см. файлP.S. - Поиск "артикул" с вариантом перебора из двух вариантов - кто должен придумывать эти варианты? Мы или вы?- Поиск "цена" с вариантом перебора из двух вариантов - кто должен придумывать эти варианты? Мы или вы?Допилите предложенный вариант под свои варианты. Для просмотра макроса нажмите в файле Alt+F11
Добрый день. Спасибо большое сейчас посмотрю. Не писал варианты, так как сам проставлю нужные варианты перебора и количество переборов. Спасибо огромное за помощь.
Добрый вечер! может кто может помочь с написанием куска кода. задача следующая: есть прайс с множеством столбцов которые соответственно подписаны, из него необходимо перенести на новый лист 3 столбца наименование, артикул, цена. логика: 1. поиск слова в диапазоне 1-10 строка. поиск "наименование", или "название". Если найдено совпадение, то определить столбец, создать новый лист и скопировать на новый лист в столбец А;
то же самое и с остальными столбцами, только копирование на уже существующий лист на котором внесено наименование.
2. Поиск "артикул" с вариантом перебора из двух вариантов и копирование на другой лист в столбец B.
3. Поиск "цена" с вариантом перебора из двух вариантов и копирование на другой лист в столбец С.
Sub УдалитьСтроки()
Dim r As Range
Set r = Selection
Dim y As Long
For y = r.Row + r.Rows.Count - 1 To r.Row Step -1
If Cells(y, 8).Value = "" Then
Rows(y).Delete
End If
Next
End Sub
Нужно внедрить текст бокс в данный код. Перед выполнением удаления строк вывести форму с вводом цифры (номер столбца) и вставить в код. Пример: Укажите номер столбца при вводе номер столбца должен изменяться в коде.
На данный момент нужно постоянно лазить в макрос и изменять номер столбца.
Помогите пожалуйста, есть файл накладная, в нем целая куча ненужных строк, как можно сформировать на этом листе, или на другом только строки с товарами, а все остальное удалить. Прикрепил пример . В файле указаны позиции красных как пример строки , которые нужно оставить, а остальные удалить. и так в файле строк может быть как 10 так и 200.