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

Страницы: 1
Импорт данные из EXCEL в WORD через MERGEFIELD
 
Добрый день!

Импортирую данные из EXCEL в WORD через поле MERGEFIELD  
В excel в ячейки данные записаны с делением на строчки. Т.е. каждое слово с новой строчки идет.  Но когда импортирую в WORD, то это деление пропадает...

Это можно както исправить?
Спасибо  
Формула прогноза посещаемости по условиям
 
Добрый день!

Помогите составить формулы или это будет макрос, не пойму как правильно сделать.

Необходимо сделать примерный прогноз посещаемости на 6 месяцев (с учетом выкладки 4 статей в месяц и ее средней позиции 3-7).

Исходные данные
- Месячная посещаемость каждой статьи (вкладка Посещаемость статей)
- Прогноз кликабельности в процентах в зависимости от позиции (вкладка Ориентировачная кликабельность). Позиции брать 3-7
- Кол-во добавление статей в месяц - 4

Т.е. необходимо взять по списку из вкладки "Посещаемость статей" общую Посещаемость 4-х статей
Посчитать примерное кол-во переходов - умножить на случайный процент каждой статьи (между минимальные и максимальные процентом) и округлить до целого
И записать результат в вкладку Прогноз посещаемости - 1 месяц.
И далее, по аналогии, берем посещаемость следующих 4-х статей и опять все заново...

Подскажите, как правильно составить формулу для каждого месяца.
При этом как понимаю с каждым последующим месяцем будет посещаемость увеличиваться, так как плюсуем посещаемость всех предыдущих месяцев.

Т.е. примерные результат в вкладке "Прогноз посещаемости"

СПАСИБО
Фильтрация строк по группам
 
Добрый день!

Необходимо из каждой группы (столбец "Родительская группа" - если названия повторяются то это одна группа) взять N количество строк (со всеми данными) с максимальными частотами - столбец "Частота [KS]". Т.е. частоты берем по убыванию.

Соответственно если это будет фильтр было бы отлично или макрос.
Стандартными средствами это можно сделать?
СПАСИБО

Дополнение - сортировку внутри групп по поределенному полю сделал, через стандартый модуль "Сортировка"
А далее как взять N количество строк с каждой группы с выбором частот по убыванию...
Изменено: mazersw - 13.09.2021 18:12:58
Замена текста макросом на проверку наличия текста
 
Добрый день!

Записал простой макрос по замене текста.
Код
    Cells.Find(What:="ТЕКСТ", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate

Проблема в том, если не найдет текст, то выдает ошибку.

Подскажите как это исправить?

СПАСИБО

Вывести приветственное сообщение при открытии файла
 
Добрый день!

Есть Файл - книга excel, в нем нет макросов вообще.
Необходимо через макрос или как-то по другому, сделать, чтобы при открытии файла выводилось информационное сообщение.
Т.е. нужно через отдельный макрос добавить макрос в текущий файл - который будет просто выводить информационное окно при открытии файла.

Зачем это все?
Я создаю файл с некими данными, файл без макросов вообще.
Потом как-то нужно добавить в файл информационное сообщение вида "Это демо версия" - которое будет при открытии файла.
Соответственно добавляться должно автоматом, так как файлов будет много и каждый раз лезть в макросы и добавлять код - не очень хочется.

Что-то не пойму как это сделать
Изменено: mazersw - 07.05.2021 19:08:16
Группировка списков запросов
 
Добрый день!

Необходимо сгруппировать слова (запросы) по строчно.
Т.е. есть категория, она добавляется в результат всегда первая, с двоеточием, и далее подставляются сгруппированные списки из Список1 и Список2
Подскажите, как можно это сделать стандартными средствами или с помощью макроса?
Приложил пример, с результатом работы

СПАСИБО
Изменено: mazersw - 03.03.2021 13:46:04
Сохранить путь файла в переменную и открыть повторно
 
Добрый день!

Подскажите как можно сделать с помощью макроса:
Сохранить файл, и далее путь текущей активной книги сохранить в переменную
Закрыть файл и открыть заново файл из переменной.

Спасибо
Сократить название листа (окончание названия может быть разным)
 
Добрый день!

Записал простой макрос для переименования листа Excel
Код
    Sheets("Словарь 195").Name = "Словарь"

Но после названия - Словарь - могут быть любые цифры, т.е. не только 195, а к примеру 30, 504 или 1635
И нужно оставить только - Словарь соответственно.
Подскажите пожалуйста, как можно это сделать?

СПАСИБО
Удалить строки с повторяющимися значениями
 
Добрый день!

Как удалить полностью строки, если повторяются значения более чем в 2-х ячейках и более чем 2-х строк
Приложил пример, т.е. нужно удалить строки выделенные красным.
Определить для частоты ее диапазон (НЧ, ВЧ...)
 
Добрый день!

Есть столбец с частотами - от 1 до любого числа.
В новую колонку нужно добавить уровень в зависимости от числа.
Т.е. в новый столбец с каждой ячейкой необходимо записать уровень частот.

Уровни:
НЧ - от 1 до 100
СЧ - от 100 до 1000
ВЧ - от 1000 до 10000
СВЧ от 10000

Подскажите как это можно сделать стандартными средствами Excel или через макрос?
Возможно название не правильно поставил, для модераторов - если нужно поменяйте.

Спасибо
Ошибка макроса - Method "Add" of object "ListObject" failed
 
Добрый день!

Записал макрос. На некоторых файлах все выполняется отлично а на некоторых выдает ошибку:
Цитата
Run-time error -2147417848 (80010108)
Method "Add" of object "ListObject" failed
Т.е. после запуска, просто зависает программ, нажимаешь закрыть, и Windows дает - перезапуск Excel ну  и после выводится ошибка VBA.

Подскажите пожалуйста кто с этим сталкивался, как можно исправить?
Код
Sub Макрос12()
' Макрос12 Макрос

    Sheets("Словарь").Select
   ' удаление строк
       Dim ra As Range, delra As Range
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    ' ищем и удаляем строки, содержащие заданный текст
    ' (можно указать сколько угодно значений, и использовать подстановочные знаки)
    УдалятьСтрокиСТекстом = Array("на", "для", "идти", "если", "при", "это", "до", "о", "из", "надо", "за", "в", "с", "как", "какой", "к", "что", "по", "где")
    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
        ' перебираем все фразы в массиве
        For Each word In УдалятьСтрокиСТекстом
            ' если в очередной строке листа найден искомый текст
            If Not ra.Find(word, , xlValues, xlWhole) Is Nothing Then
                ' добавляем строку в диапазон для удаления
                If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
            End If
        Next word
    Next
 
    ' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк)
    ' скрываем их If Not delra Is Nothing Then delra.EntireRow.Hidden = True    
    If Not delra Is Nothing Then delra.EntireRow.Delete    ' удаляем их
' удаление строк конец
' применение форматирование
    Columns("A:A").Select
    Selection.FormatConditions.AddColorScale ColorScaleType:=3
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 8109667
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValuePercentile
    Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
    With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 8711167
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 7039480
        .TintAndShade = 0
    End With
    Columns("A:A").Select
    Selection.FormatConditions.AddDatabar
    Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1)
        .MinPoint.Modify newtype:=xlConditionValueAutomaticMin
        .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax
    End With
    With Selection.FormatConditions(1).BarColor
        .Color = 15698432
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).BarFillType = xlDataBarFillSolid
    Selection.FormatConditions(1).Direction = xlContext
    Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
    Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderNone
    Selection.FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic
    With Selection.FormatConditions(1).AxisColor
        .Color = 0
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).NegativeBarFormat.Color
        .Color = 255
        .TintAndShade = 0
    End With
' применение форматирование конец
' добавление графика
    Range("A1:B1").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlBarOfPie
    ActiveChart.SetSourceData Source:=Range("Словарь!$A$1:$B$1")
    ActiveChart.SeriesCollection(1).Values = "=Словарь!$A$2:$A$20"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "=Словарь!$B$1"
    ActiveChart.SeriesCollection(2).Values = "=Словарь!$B$2:$B$20"
    ActiveChart.SeriesCollection(2).XValues = "=Словарь!$B$2:$B$20"
    ActiveChart.ChartTitle.Select
    ActiveChart.ApplyLayout (6)
    ActiveChart.ChartTitle.Text = "ТОП20 униграмм в семантическом ядре"
    Selection.Format.TextFrame2.TextRange.Characters.Text = "ТОП20 униграмм в семантическом ядре"
    With Selection.Format.TextFrame2.TextRange.Characters(1, 14).ParagraphFormat
        .TextDirection = msoTextDirectionLeftToRight
        .Alignment = msoAlignCenter
    End With
    With Selection.Format.TextFrame2.TextRange.Characters(1, 14).Font
        .BaselineOffset = 0
        .Bold = msoTrue
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 18
        .Italic = msoFalse
        .Kerning = 12
        .Name = "+mn-lt"
        .UnderlineStyle = msoNoUnderline
        .Strike = msoNoStrike
    End With
    ActiveChart.ChartArea.Select
    ActiveSheet.Shapes("Диаграмма 1").ScaleWidth 1.48125, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Диаграмма 1").ScaleHeight 1.4010414844, msoFalse, _
        msoScaleFromBottomRight
    ActiveSheet.Shapes("Диаграмма 1").ScaleHeight 1.1449815616, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Диаграмма 1").ScaleWidth 1.0928271519, msoFalse, _
        msoScaleFromTopLeft
    ActiveChart.ChartGroups(1).SeriesLines.Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(19).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(18).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(17).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(16).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(15).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(14).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(13).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(12).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(11).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(10).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(9).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(8).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(7).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(6).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(5).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(4).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(3).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(2).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Points(1).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(1).Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(2).Points(20).DataLabel.Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(2).Points(19).DataLabel.Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.SeriesCollection(2).Points(18).DataLabel.Select
    ActiveSheet.ChartObjects("Диаграмма 1").Activate
    ActiveChart.ChartArea.Select
    ActiveSheet.Shapes("Диаграмма 1").IncrementLeft -96.75
    ActiveSheet.Shapes("Диаграмма 1").IncrementTop 9
    ActiveWindow.SmallScroll Down:=-80
    ActiveChart.ClearToMatchStyle
    ActiveChart.ChartStyle = 10
    ActiveChart.ClearToMatchStyle
' добавление графика конец

   '  форматирование таблицы
       Columns("A:C").Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A:$C"), , xlYes).Name = _
        "Таблица5"
       Range("Таблица5[[#Headers],[Униграмма]]").Select
    Range("Таблица5[[#Headers],[Униграмма]]").AddComment
    Range("Таблица5[[#Headers],[Униграмма]]").Comment.Visible = True
    Range("Таблица5[[#Headers],[Униграмма]]").Comment.Text Text:= _
        "Униграмма (лемма)  - это исходная форма слова. "
    'Selection.ShapeRange.IncrementLeft -62.25
    'Selection.ShapeRange.IncrementTop 58.5
    '  форматирование таблицы
End Sub

Еще проблема в том, что ошибка рандомная - то есть, то нет!
не знаю даже куда копать(((
Размыть текст через одну строчку
 
Добрый день!

Подскажите  пожалуйста можно ли сделать размытие текста к примеру через одну строчку?
Т.е. нужно для того, чтобы пользователь не смог посмотреть сам текст, но строчка сама была в таблице, т.е. данные ни какие нельзя обновлять или удалять...
Спасибо
Пример файла прикрепил.
Задача - через одну строчку сделать размытие текста.
Параметры для минимального и максимального значения при условном форматировании
 
Добрый день!

Подскажите какие параметры отвечают за минимальное и максимальное значение при условном форматировании.
Записываю макрос, выставляю минимальные и максимальные значения, а в макросе они не добавляются почему-то :(
https://clip2net.com/s/4a1K63Q

СПАСИБО
Изменено: mazersw - 30.11.2020 15:27:47
Последовательный поиск на листе 3-х значений и запуск одного из трех макросов
 
Добрый день!

Помогите с условием.
Если найдена ячейка с текстом "Текст" то её нужно активировать и выполнить мой макрос
Если НЕ найдена то перейти к поиску следующей ячейки с текстом "Текст2" и выполнить опять мой 2 макрос.
Иначе если не найдена и эта ячейка, то переходим к поиску и активации 3-й ячейки с текстом "Текст3" и соответственно выполнить 3-й макрос.

СПАСИБО
Как из активной книги EXCEL открыть WORD документ
 
Добрый день.

Нужно открыть DOC файл из пути excel активной книги.
Код
    Dim WD
    Set WD = CreateObject("Word.Application")
    WD.Visible = True
    WD.Application.WindowState = 1
    WD.Documents.Open Filename:=ActiveWorkbook.Path & "\ТЗ\" & "шаблон сайта услуг.docx"
    WD.Activate

Но проблема в том, что в Word нет такого параметра как ActiveWorkbook.Path там есть CurrentProject.Path

Соответственно выше код ни чего не делает, так как не воспринимает ActiveWorkbook.Path

Возможно ли как-то показать, что doc файл нужно открыть из пути активной книги EXCEL

Массовое удаление столбцов в файлах CSV
 
Добрый день!

В папке есть несколько десятков CSV файлов.
Необходимо по всем файлам пройтись и полностью удалить несколько столбцов - с определенными заголовками
С дальнейшем сохранением.
Как можно это сделать или подскажите есть ли готовые макросы?

Спасибо
Изменено: mazersw - 19.10.2020 17:07:45
Как найти нужный макрос в Visual Basic
 
Добрый день!

Тестировал макрос, т.е. стандартно добавил модуль через insert.
Закрыл редактор Visual Basic
Сохранять не нажимал.
Закрыл полностью EXCEL
Но теперь проблема - после запуска Excel выходит ошибка - Недопустимый формат файла.
Я тестировал макрос копирования docx файла. Это из-за него.

Загвозка в том, что не могу найти куда сохранился этот макрос, возможно было автосохранение.
Пересмотрел все влкладки и подпапки, не пойму откуда он запускается.

Изменено: mazersw - 16.10.2020 14:32:28
Как добавить относительный путь в макрос
 
Добрый день!

Есть макрос, который создает папку.
Код
Sub Primer1()
Dim fso As Object, i As Integer
'Создаем новый экземпляр FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'Создаем несколько новых папок
    With fso
        .CreateFolder ("ТЗ")
    End With
End Sub

И второй макрос, который копирует файл

Код
Sub Copy_File()
    Dim sFileName As String, sNewFileName As String
    sFileName = "E:\Папка\шаблон сайта услуг.docx"    'имя файла для копирования
    sNewFileName = "ТЗ/шаблон сайта услуг.docx"    'имя копируемого файла. Директория(в данном случае диск D) должна существовать
    If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
    FileCopy sFileName, sNewFileName 'копируем файл
End Sub

Подскажите не пойму, как в двух макросах добавить относительный путь, т.е. путь, текущей открытой книги.

Т.е. чтобы создать папку, а потом скопировать файл по пути текущего открытого файла.

Спасибо
Изменено: mazersw - 16.10.2020 12:22:51
Как назначить на кнопку диалогового окна макрос?
 
Добрый день!

Необходимо вывести диалоговое окно с двумя кнопками.
На каждую кнопку назначить свой макрос (добавить свой код макроса)
Подскажите как это можно сделать, с диалоговыми окнами не приходилось работать.
Спасибо!
Копирование файлов через диалоговое окно
 
Здравствуйте формучане.

Есть код, который копирует один файл в папку (подпапку) текущей книги. Здесь все понятно.
Код
Sub Copy_File()
    Dim sFileName As String, sNewFileName As String
    sFileName = "E:\папка\папка2\шаблон сайта услуг.docx"    'имя файла для копирования
    sNewFileName = "ТЗ/шаблон сайта услуг.docx"    'имя копируемого файла. Директория(в данном случае диск D) должна существовать
    If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
    FileCopy sFileName, sNewFileName 'копируем файл
End Sub
Подскажите пожалуйста, как сделать копирование на 2 файла через выбор в диалоговом окне.
Пути к этим 2-м файлам известны. И не меняются.

Т.е. появляется диалоговое окно с 2-мя кнопками:

1. Скопировать первый файл
2. Скопировать второй файл

И первый и второй файл копируется в одну подпапку текущей книги.
Т.е. пользователю просто нужно нажать на нужную кнопку для копирования нужного файла.

Такое можно реализовать?

Спасибо
Пропуск первой строчки в работе макроса
 
Добрый день!

Есть макрос, который удаляет строчки целиком по определенному условию:
Код
Sub УдалениеСтрокПоУсловию()
 
    Dim ra As Range, delra As Range, ТекстДляПоиска As String
    Application.ScreenUpdating = False    

    ТекстДляПоиска = "!Частотность !Весь !мир"   


    For Each ra In ActiveSheet.UsedRange.Rows
        If Not 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
    

  Application.ScreenUpdating = True
    
End Sub

Подскажите пожалуйста, как настроить макрос, чтобы он работы со второй строчки, т.е. первую строчку нужно пропустить
Изменено: mazersw - 08.10.2020 12:27:20
Замена символов в столбце (последовательность работы макросов)
 
Добрый день!

В текущий макрос добавил в конец кода еще один макрос:
Код
Dim numberColumn, phraseColumn, titleColumn, nFirstRow, nLastRow As Integer
Dim currentPosition As Long
Dim currentRow As Integer
Sub DoEverything()
    Call DoInit
    'x = Application.CountA(Rows("35:35"))
    'x = Application.WorksheetFunction.CountA(ActiveWorksheet.Columns("A"))
    Worksheets(1).Copy After:=Worksheets(Worksheets.Count)
    Set currentWorksheet = Worksheets(Worksheets.Count)
    currentWorksheet.Activate
    currentWorksheet.Name = "Технические данные"
    currentColumns = Application.WorksheetFunction.CountA(currentWorksheet.Rows("1"))
    currentColumns = currentColumns + 1
    currentWorksheet.Cells(1, currentColumns - 1).Copy currentWorksheet.Cells(1, currentColumns)
    currentWorksheet.Cells(1, currentColumns).Value = "Список фраз"
    
    'fusion
    outText = ""
    completedRow = nFirstRow
    counter = CStr(currentWorksheet.Cells(completedRow, numberColumn))
    For currentRow = completedRow To nLastRow
        If CStr(currentWorksheet.Cells(currentRow, numberColumn)) = CStr(counter) Then
            If outText = "" Then
                outText = currentWorksheet.Cells(currentRow, phraseColumn).Value
            Else
                outText = outText & ", " & currentWorksheet.Cells(currentRow, phraseColumn).Value
            End If
        Else
            'counter = counter + 1
            counter = CStr(currentWorksheet.Cells(currentRow, numberColumn))
            currentWorksheet.Cells(completedRow, currentColumns).Value = outText
            completedRow = currentRow
            outText = currentWorksheet.Cells(currentRow, phraseColumn).Value
        End If
        
        If currentRow = nLastRow Then
            If outText = "" Then
                outText = currentWorksheet.Cells(currentRow, phraseColumn).Value
            Else
                outText = outText & ", " & currentWorksheet.Cells(currentRow, phraseColumn).Value
            End If
            currentWorksheet.Cells(completedRow, currentColumns).Value = outText
        End If
    Next currentRow
    
    'removal
    completedRow = nFirstRow
    counter = CStr(currentWorksheet.Cells(completedRow, numberColumn))
    For currentRow = completedRow To nLastRow
        If CStr(currentWorksheet.Cells(currentRow, numberColumn)) <> CStr(counter) Then
            counter = CStr(currentWorksheet.Cells(currentRow, numberColumn))
            completedRow = completedRow + 1
            nLastRow = nLastRow - (currentRow - 1 - completedRow)
            If currentRow > completedRow Then
                currentWorksheet.Range(Rows(completedRow).EntireRow, Rows(currentRow - 1).EntireRow).Delete
            End If
'            For j = currentRow - 1 To completedRow Step -1
'                currentWorksheet.Rows(j).EntireRow.Delete
'            Next j
            currentRow = completedRow
        End If
    Next currentRow
    
    'New column Заголовок ТЗ
    nLastRow = currentWorksheet.Cells(Rows.Count, numberColumn).End(xlUp).Row
    currentWorksheet.Columns(1).Insert Shift:=xlToLeft
    currentWorksheet.Cells(1, 2).Copy currentWorksheet.Cells(1, 1)
    currentWorksheet.Cells(1, 1).Value = "Заголовок ТЗ"
    currentWorksheet.Columns(1).ColumnWidth = 62
    currentWorksheet.Range(currentWorksheet.Cells(1, 1), currentWorksheet.Cells(nLastRow, 1)).Interior.Color = 11910834
    currentColumns = currentColumns + 1
    titleColumn = 3
    For currentColumn = 3 To currentColumns
        If currentWorksheet.Cells(1, currentColumn).Value = "Название" Then
            titleColumn = currentColumn
        End If
    Next currentColumn

    For currentRow = nFirstRow To nLastRow
        'currentWorksheet.Cells(currentRow, 2).Copy currentWorksheet.Cells(currentRow, 1)
        currentWorksheet.Cells(currentRow, 1).Value = "ТЗ №" & CStr(currentWorksheet.Cells(currentRow, 2).Value) & " для страницы - " & CStr(currentWorksheet.Cells(currentRow, titleColumn).Value)
    Next currentRow
    
End Sub
Sub DoInit()
    numberColumn = 1
    phraseColumn = 2
    titleColumn = 3
    nFirstRow = 2
    nLastRow = ActiveSheet.Cells(Rows.Count, numberColumn).End(xlUp).Row
End Sub

    Sub macrzamena()
    'Замена символов
    Columns("A:A").Select
    Selection.Replace What:=",", Replacement:="ггггг", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=":", Replacement:="ааа", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="~?", Replacement:="ааа", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Cells(1).Select
    ExecuteExcel4Macro ("SOUND.PLAY(,""C:\Windows\Media\ttt.wav"")")
    'Замена символов
    End Sub
Т.е. макрос Замена символов - macrzamena

Но макрос почемуто не выполняется.
Если его запустить отдельным макросом вообще, все нормально.
Подскажите в чем проблема может быть

В коде ошибок вроде нет, так как он отдельно

запускается
Удаление всех строк, которые содержат определенные слова
 
Добрый день!

Подскажите пожалуйста, как можно удалить все строки, которые в любой ячейки содержат определенный текст, к примеру "Частотность Весь мир"
При этом, 1-ю строку пропускаем, т.к. это заголовки.
https://clip2net.com/s/48TyX7D

Т.е. у меня есть таблица, где первая строка - это заголовки колонок, и  далее через определенное кол-во строк эти заголовки повторяются, вот эти повторения нужно удалить
Как добавить заголовок в макросе к новой колонке
 
Добрый день!

Есть некий макрос, который создает и  заполняет полностью новый столбец,
Не пойму как добавить к новой колонке название в первой ячейки
Код
Sub FormulaToMacros()

  'Больше не обновляем страницы после каждого действия
  Application.ScreenUpdating = False

    'настройки
    targetColumn = 3                                         
    nextColumn = Cells(1, 1).End(xlToRight).Column + 1                            
    firstRow = 2                                             
    lastRow = Cells(Rows.Count, targetColumn).End(xlUp).Row 
    outText = "=PERSONAL.XLS!LastWord(" & Chr(64 + targetColumn)         
    'заполняем
    For currentRow = firstRow To lastRow                                                 
        ActiveSheet.Cells(currentRow, nextColumn).Formula = outText & currentRow & ")"   
    Next currentRow                                                                      
    'пустые ячейки не пропускает
    
    'Включаем обновление экрана после каждого события
  Application.ScreenUpdating = True
    
End Sub
Как правильно сделать простой макрос, функции excel
 
Добрый день!

Есть две функции, которые доступны из любых файлов:
Код
Function StartWord(txt As String, Optional delim As String = "/", Optional n As Integer = 1) As String
    arFragments = Split(txt, delim)
    StartWord = arFragments(LBound(arFragments) - n + 1)
End Function

и
Код
Function LastWord(txt As String, Optional delim As String = "/", Optional n As Integer = 1) As String
    arFragments = Split(txt, delim)
    LastWord = arFragments(UBound(arFragments) - n + 1)
End Function

Очень неудобно постоянно заходить в функции, выделять ячейки, протягивать...

Подскажите, как эти 2 функции упаковать в простой макрос.
Т.е. после выполнения макроса создаются 2 новых колонки, где первая ячейка это заголовок.
А данные для преобразования беруться из колонки С
В программировании я не очень разбираюсь, но может есть подобные примеры... или кто сможет помочь :)
Буду благодарен

Спасибо
Изменено: mazersw - 17.04.2020 10:25:36
Как массово применить фильтр и результат записать в новый фай CSV
 
Добрый день!

Есть несколько десятков файлов CSV  - Файл Microsoft Excel, содержащий значения, разделенные точкой с запятой (.csv)
В каждом более 1 млн. строк
У всех - первая строчка это заголовок.

Необходимо во всех файла применить фильтр на все данные, по колонке Е - больше или равно 100.
Т.е. Если ячейка Е больше 100, то эту строчку берем.
И все результаты сохранить в новый файл.

Как можно реализовать такое?
В программировании не силен :(
Как сохранить шаблон для Условного форматирования?
 
Добрый день!

Подскажите, как сохранить СВОЙ шаблон для Условного форматирования?
Соответственно чтобы был доступен из любого EXCEL файла
EXCEL 2010 версии

СПАСИБО
Как скопировать текст после последнего слеша?, функции excel
 
Добрый день!

Есть столбец с данными, пример:
--
Каталог/Костюм/Для мальчиков/Школьные
Каталог/Костюм/Для мальчиков/Новогодние
Каталог/Костюм/Для девочек/Спортивные
Каталог/Костюм/Для девочек/Зимние
Каталог/Платья/На новый год
Каталог/Платья/Вечерние платья
Каталог/Головные уборы/Шапки с меховым помпоном
Каталог/Головные уборы/Шапки для мальчика
Каталог/Головные уборы/Шапки для девочек
Каталог/Головные уборы
--

Подскажите как скопировать в отдельный столбец последнее название категории после слеша?
Т.е. должно получится:
Школьные
Новогодние
Спортивные
Зимние
...

В стандартных текстовых функциях нет такой формулы.

Установлена 2010 версия.

Спасибо
Страницы: 1
Наверх