Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Макрос: вставка пустых строк по условию, Необходимо вставить пустые строки после строк с определенным значением
 
Добрый вечер!

Просмотрела весь форум..была очень близка к решению вопроса сама, но не сложилось)...
Нашла следующий код:
Код
      Sub StrokaAfterCHILD()
      Dim i As Range
          
          For Each i In Selection
          If i = "0-3y free" Then i.Offset(1, 0).EntireRow.Insert xlDown

      Next
      End Sub
Данный код вставляет пустую строку, после строки, где в ячейке есть железно фраза "0-3y free" (либо другая конкретная фраза, указанная в коде)..

А мне необходимо, в идеале:
после строки, где в ячейке есть:
ОДНА запятая - вставляло 2 пустых строки,
где ДВЕ запятых - вставляло 3 пустых строки,
а где есть любой текст но НЕТ запятых - то 1 пустая строка.

Если это сложно, то подскажите, пожалуйста, как прописать в макросе что выше, не "железно" значение, а СОДЕРЖИТ... не If i = "0-3y free", а i "содержит free".
Так же, для наглядности прилагаю часть рабочего файла.
Буду признательна за помощь!

PS Три S чтоб сто% уникальный с первого раза)
Изменено: Алина - 14 Ноя 2016 23:45:13
 
othersidesss, код следует оформлять соответствующим тегом: ищите такую кнопку и исправьте своё сообщение.
Спасибо!
Помощь после устранения замечания.
P.S. А чего только три буквы s в конце ника? Давайте штук 7 - красивее будет.
Тег VBA.jpg (19.2 КБ)
 
Замечания устранены..
 
Алина, пробуйте, выделять ничего не нужно.
Код
Sub Alina()
Dim i&, s$
  For i = Cells(Rows.Count, "E").End(xlUp).Row To 2 Step -1
    s = Cells(i, "E")
    If Len(s) Then Rows(i + 1).Resize(1 + Len(s) - Len(Replace(s, ",", ""))).Insert
  Next
End Sub
Теперь, видимо, будет просьба заполнить вставленные строки вышестоящими значениями? ;)
Изменено: Казанский - 14 Ноя 2016 22:27:09
 
Код
Option Explicit

Sub insert_rows_after_conditions()
    Dim rngCol As Range
    Dim sTmp As String
    Dim lTmp As Long
    Dim i As Long
    
    Const sKEY_PHRASE As String = "*free*"
    Const sTARGET_DELIMETR As String = ","
    Const sTARGET_COLUMN As String = "E"
    Const lROW_START As Long = 2
    
    With ActiveSheet
        Set rngCol = .Range(sTARGET_COLUMN & lROW_START & ":" & sTARGET_COLUMN & _
            .Cells(.Rows.Count, sTARGET_COLUMN).End(xlUp).Row)
        For i = rngCol.Rows.Count To 1 Step -1
            sTmp = rngCol.Rows(i).Value
            If sTmp Like sKEY_PHRASE Then
                lTmp = Len(sTmp) - Len(Replace(sTmp, sTARGET_DELIMETR, "")) + 1
                rngCol.Rows(i).Offset(1).Resize(lTmp).EntireRow.Insert xlDown
            End If
        Next i
    End With
End Sub

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Фантастика!
Сразу вариант на погуглить, чтоб разобраться и вариант, чтоб сразу разобраться)
Спасибо большое!
Четыре дня в кабинете будет тихо без кликов мышки по 300тыс строкам))

F5 - выделить пустые - = - вверх - ctrl+enter девиз вообще не наш) дальше уже проверенным методом, хоть и займет пару дней, "разбивки текста по столбцам" и пару тройку сложнейших условий "если").
 
Цитата
JayBhagavan написал:
Здравствуйте! У вас супер решение! Помогите пожалуйста. Как доработать, что бы строки вставлялись выше сработанного условия? И можно ли сделать что бы вставлялись не пустые строки, а строки по макету? Грубо говоря Выдал_______ Принял______.
 
Андрей Андрей, я давно не посещаю данный ресурс и, ЕМНИП, то одно из правил форума гласит "один вопрос - одна тема". Лучше создайте свою тему (согласно правил форума) и приложите файл пример с двумя листами как было до срабатывания макроса и как будет после срабатывания макроса выглядеть таблица.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Читают тему (гостей: 1)
Наверх