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

Страницы: 1
VBA RegEx макрос для .docx (или для строки в ячейке Excel), Замена значений в тексте
 
Всем доброго времени суток. Прошу помощи в написании макроса.
Имеется огромный документ, в котором наименование источников необходимо привести к "ссылочному" варианту. Вручную перебирать более 1500 источников было бы крайне утомительно, да и задача время от времени возникает.

В документе .docx (хотя задача может быть решена и для текста в ячейке A1 в документе .xlsx) необходимо найти первый фрагмент, заключенный между служебными словами ref и заменить такой фрагмент во всем тексте на [1] и т.д.

Было: ref[ivanov-14]ref, тут текст ref[!VasilyevMA]ref еще текст [text], ref[ivanov-14]ref
Стало: [1], тут текст [2] еще текст [text], [1]

Другими словами, произвести замену элементов по всему тексту на порядковые номера, по порядку следования.

За основу можно взять скрипт источник ():
Код
Sub ReplaceText()
    Application.ScreenUpdating = False
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .ClearFormatting
        .Replacement.Text = ""
        Do While .Execute(FindText:="\[*\]", MatchWildcards:=True)
            .Execute FindText:="[[\] ]", MatchWildcards:=True, _
                ReplaceWith:="", Replace:=wdReplaceAll, Wrap:=wdFindStop
        Loop
    End With
    Application.ScreenUpdating = True
End Sub
Изменено: taxol - 29.11.2022 10:24:10
VBA борьба с вложенными циклами, Вызов процедуры проверки из кода программы.
 
Добрый день! В процессе написания кода часто сталкиваюсь с одной проблемой: приходится использовать процедуру проверки введенных оператором в таблицу значений, (численное/строковое значение, больше или меньше определенного значения и т.п.). При этом приходится использовать цикл IF, в результате чего
образуется множество вложенных циклов. Читабельность кода резко снижается.
В показанном ниже по тексту примере, если условие не выполняется, выходим из процедуры Sub procedure(). Но нельзя ли вызвать отдельную процедуру Sub check() в рамках которой проверить выполнение условия, и если оно не выполняется, завершить Sub procedure(). Помимо прочего, возможно Вам известны интересные варианты с передачей параметров из основного метода в check; использованием значений счетчиков (полученных в результате работы циклов) и т.п. Буду благодарен за любые предложения, интересные примеры, ссылки, лайфхаки.
Код
 Sub procedure()
If range("A1").Value=1 Then
MsgBox("значение равно единице")
else
Exit Sub
End If
End Sub
Изменено: taxol - 12.06.2022 11:05:29
VBA Передать имя рабочего листа из списка
 
Доброго времени суток!
В листе "Лист1", диапазона A1:A находятся некоторые имена листов активной рабочей книги. Например, Range("A3").Value="Лист5"
Как "прогнать макрос" (любое действие) только по тем рабочим листам, имена которых располагаются в диапазоне A1:A листа Лист1?
VBA Range().Find(), Поиск
 
Всем доброго дня. Имеется не сложный скрипт. Если я правильно понимаю, проблема в представлении типа данных. "даты" никак не хочет искать.
Код
Sub primer1()
Dim myPhrase As Variant, myCell As Range
myPhrase = myPhrase = Range("A7").Value
myPhrase = CDate(myPhrase)
Set myCell = Range("F8:F17").Find(myPhrase)

If Not myCell Is Nothing Then

MsgBox "Адрес: " & myCell.Address
Else
MsgBox "фраза не найдена"
End If
End Sub
Изменено: taxol - 28.04.2022 00:01:49
VBA перебор книг в каталоге с внесением изменений
 
Всем доброго времени суток!
В каталоге имеется набор файлов-рабочих книг в формате .xlsx. Имена книг могут принимать разные значения.
Из ячейки A26 рабочей книги (C:\Users\1\Desktop\вставляем_номер.xlsx) необходимо перенести значение в ячейку А26 для каждой рабочей книги из каталога (C:\Users\1\Desktop\вставить).
Можно ли открывать по порядку каждую рабочую книгу, в реализации цикла For Each?
В приведенном коде возникает ошибка, т.к. не правильно реализован open файлов. Прошу помощи в исправлении ошибки.
P.S. Какие методы лучше использовать для решения подобных задач?

Код
Sub Number()

Workbooks.Open Filename:="C:\Users\1\Desktop\вставляем_номер.xlsx"
Workbooks("вставляем_номер.xlsx").Worksheets("Лист1").Cells(1, 26).Copy

Dim bookconst As Workbook
Dim oFile As Object
Dim oFolder As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = FSO.GetFolder("C:\Users\1\Desktop\вставить")
    For Each oFile In oFolder.Files
        ControlFile = ActiveWorkbook.Open
        ActiveWorkbook.Worksheets("Лист1").Cells("A26").Select
        ActiveSheet.Paste
        bookconst.Save
        bookconst.Close
    Next
End Sub
Изменено: taxol - 02.11.2021 08:42:26
Создание консолидированной таблицы данных (отсортированных по дате) со всех рабочих листов книги
 
Всем доброго времени суток!
Синонимичные темы несколько отличаются в реализации, поэтому решил создать новую тему.
На всех рабочих листах книги, в колонках B и D, начиная с третьей строки, располагаются данные: фамилия - дата рождения.
Необходимо в сводной таблице на листе "result" отобразить те же данные, только предварительно отсортировать по дате.
Заранее благодарю за содействие.
Изменено: vikttur - 17.09.2021 00:10:16
Разрядность числа как у числа из соседней ячейки
 
Всем доброго времени суток!
В приведенном примере, в колонках А и B исходные значения, в колонке С результат (построчная разность). В случае если разрядность чисел из столбцов A и B одинакова, как "разницу" отображать с той же разрядностью? Например: (8-7=1); (8,1-7,1=1,0); (1,20-1,10=0,10). Пытался использовать ДЛСТР(A1)-ПОИСК(",";A1) однако возникает "затык" с целочисленными значениями
Получить имя листа из ячейки и использовать при выборе данных
 
Добрый день!
При построении всевозможных графиков, для выбора данных используются формулы навроде:
Код
 =РЯД("Верхний предел";'стандарт'!$A$24:$A$912;'стандарт'!$O$24:$O$912;6)

Понятно что 'стандарт' это имя листа. При появлении стандарта1 приходится вручную изменять имя листа во всех формулах (их больше 30).

Можно ли вместо 'стандарт' прописать путь к ячейке, в которой будет находиться значение имени листа, чтобы это имя автоматически вставлялось вместо ;'стандарт' по всем формулам?

Вероятно как-то можно применить ДВССЫЛ: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=37333
VBA нахождение суммы чисел в столбце между разграниченными строками, пользовательская функция, нахождение суммы чисел между строками, имеющими выделенные границы
 
Всем доброго здравия!
Можно ли создать пользовательскую функцию, выполняющую следующую работу (с автообновлением при внесении данных):
Как только в столбце "А" появляется значение даты, верхняя граница этой строки (нижняя вышестоящей офк), приобретает выделение в диапазоне столбцов "A-J" и происходит расчет суммы чисел, находящихся между границами. Пример с затравкой макроса во вложении.
Заранее благодарю за содействие.
Найти разницу между несколькими ячейками "приход" и "расход" построчно
 
Всем доброго времени суток!
Необходимо найти разницу между именованными элементами "приход" и "расход" построчно.
Благодарю за содействие
VBA открыть (если закрыт)/развернуть(если свернут) документ.
 
Имеется простой макрос, привязанный к кнопке. При нажатии - открытие документа, наименование которого расположено в ячейке А1 на листе с именем "sheet1". Все прекрасно работает:
Код
Sub console_geo()
    FilePath = Sheets("sheet1").Cells(1, 1)
    Workbooks.Open Filename:=FilePath
End Sub

Однако как мы знаем, при попытке повторного открытия документа появляется сообщение о недопустимости повторного открытия документа и возможной потери данных. Поэтому необходимо изначально проверить, отрыт ли документ. Если он открыт, то просто развернуть на весь экран. Если же он закрыт, то открыть. Выходит что-то вроде:
Код
Sub console_geo()
FilePath = Sheets("sheet1").Cells(1, 1)
If Application.Windows().WindowState = xlMinimized Then Application.Windows().WindowState := xlMaximized
Else
Workbooks.Open Filename:=FilePath
End Sub

Вариант нерабочий. Прошу помочь с доработкой.
VBA Извлечь даты из комментария к ячейке
 
Доброго времени суток. Имеется набор комментариев типа: "дата: 05.09.2020 начало: 05.09.2020 суббота окончание: 06.09.2020 суббота" . Необходимо в любую ячейку записать "начало: 05.09.2020 окончание: 06.09.2020".
Как можно дополнить код ниже приведенного макроса чтобы преобразовать комментарий?:
Код
Sub reestr()
Function GetComment(rCell As Range) As String
GetComment = rCell.Comment.Text
End Function
Вставка текста из одной ячейки в промежуток между текстом другой
 
Добрый день.
Имеется строка в ячейке A1: "Условия проведения измерений, температура градусов по Цельсию."
В ячейке A2 находится значение "25".
Необходимо при помощи макроса получить:  "Условия проведения измерений, температура 25 градусов по Цельсию."
По-возможности необходимо сохранить форматирование текста (жирный шрифт и т.д.).
Разбить связанные листы на отдельные документы.
 
Всем доброго времени суток! В приведенном ниже файле лист поискового запроса "поиск" и сканируемые массивы данных (седан, хэтчбэк) находятся в одном документе. Этот упрощенный (не стал выкладывать всю БД) документ решает задачу: пишем в "желтый квадрат" искомый автомобиль (если он есть в базе), программа выдает результат - объем двигателя.

Необходимо все листы разбить на отдельные документы (три документа), чтобы связь сохранялась, ессн)
При этом чтобы в колонке T оставался список с наименованием листов в разных документах, а в колонке U (выделен серо-зеленым) был путь к документам (по названию документа), содержащим эти листы.

Впрочем, если просто удастся разбить на отдельные документы, буду благодарен.
Применить одинаковый набор условий по отношению к данным из разных ячее, запись не в строку а в столбец
 
Всем доброго времени суток! Необходимо использовать функцию "если" не вложением (в одну строчку), а разбить все условия по строчкам одного столбца.
Во вложенном файле все условия находятся в столбце I. Мы поочередно проверяем, какому из трех условий соответствует значение, находящееся в столбце D и результат записываем в E.

Заранее благодарю за содействие.
Изменено: taxol - 12.12.2019 06:51:32
Страницы: 1
Наверх