Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автозаполнение с протягиванием - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автозаполнение с протягиванием (Макросы/Sub)
Автозаполнение с протягиванием
Alika27 Дата: Воскресенье, 16.07.2017, 00:19 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток!
Назрела такая проблема: есть большой файл, где требуется внести правки через автозаполнение. Стандартным протягиванием это делать слишком затратно, поэтому, поискав, я поняла, что могут помочь макросы. Но так как я совершеннейший новичок в этом, то сама найденный код в нужный преобразовать так и не смогла. Прошу помочь в решении задачи.
Отрывок из файла во вложении.
Суть вопроса:
в файле куча строк вида:

текст/416339?p=1

текст/12345?p=1

текст/6753?p=1

С неравномерным интервалом из пустых строк (от одной до 20-30) между строками с данными, всегда оканчивающимися на "?p=1".
Нужно заполнить пустые строки протягиванием так, чтобы протягивалась предыдущая строка, а окончание строки менялось на само значение+1, то есть:
текст/416339?p=1
текст/416339?p=2
текст/12345?p=1
текст/12345?p=2
текст/12345?p=3
текст/6753?p=1

и так далее. Сложность в том, что для стандартного автозаполнения код я нашла, но в этом случае строка просто копируется в пустые строки до наступления строки с новым значением, а именно протягивание-автозаполнение "окончания" строки не могу сообразить, как сделать.
Помогите, пожалуйста.
Найденный код, которых просто копирует предыдущие строки:
[vba]
Код
Sub Проба2()

Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastRow
        If Cells(i + 1, 1) = "" Then
            Cells(i + 1, 1) = Cells(i, 1)
        End If
        If i + 1 = LastRow Then Exit Sub
    Next
End Sub
[/vba]
К сообщению приложен файл: 2472585.xlsx(9Kb)
 
Ответить
СообщениеДоброго времени суток!
Назрела такая проблема: есть большой файл, где требуется внести правки через автозаполнение. Стандартным протягиванием это делать слишком затратно, поэтому, поискав, я поняла, что могут помочь макросы. Но так как я совершеннейший новичок в этом, то сама найденный код в нужный преобразовать так и не смогла. Прошу помочь в решении задачи.
Отрывок из файла во вложении.
Суть вопроса:
в файле куча строк вида:

текст/416339?p=1

текст/12345?p=1

текст/6753?p=1

С неравномерным интервалом из пустых строк (от одной до 20-30) между строками с данными, всегда оканчивающимися на "?p=1".
Нужно заполнить пустые строки протягиванием так, чтобы протягивалась предыдущая строка, а окончание строки менялось на само значение+1, то есть:
текст/416339?p=1
текст/416339?p=2
текст/12345?p=1
текст/12345?p=2
текст/12345?p=3
текст/6753?p=1

и так далее. Сложность в том, что для стандартного автозаполнения код я нашла, но в этом случае строка просто копируется в пустые строки до наступления строки с новым значением, а именно протягивание-автозаполнение "окончания" строки не могу сообразить, как сделать.
Помогите, пожалуйста.
Найденный код, которых просто копирует предыдущие строки:
[vba]
Код
Sub Проба2()

Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastRow
        If Cells(i + 1, 1) = "" Then
            Cells(i + 1, 1) = Cells(i, 1)
        End If
        If i + 1 = LastRow Then Exit Sub
    Next
End Sub
[/vba]

Автор - Alika27
Дата добавления - 16.07.2017 в 00:19
AndreTM Дата: Воскресенье, 16.07.2017, 01:23 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 496 ±
Замечаний: 0% ±

2003 & 2010
Что-то вроде такого:
[vba]
Код
Sub Проба2()
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastRow
        If Cells(i + 1, 1) = "" Then
            p = InStr(1, Cells(i,1), "=")
            If p > 0 Then
                Cells(i + 1, 1) = Left(Cells(i, 1), p) & (CDbl(Mid(Cells(i,1), p+1)) + 1)
            End If
        End If
        If i + 1 = LastRow Then Exit Sub
    Next
End Sub
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеЧто-то вроде такого:
[vba]
Код
Sub Проба2()
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastRow
        If Cells(i + 1, 1) = "" Then
            p = InStr(1, Cells(i,1), "=")
            If p > 0 Then
                Cells(i + 1, 1) = Left(Cells(i, 1), p) & (CDbl(Mid(Cells(i,1), p+1)) + 1)
            End If
        End If
        If i + 1 = LastRow Then Exit Sub
    Next
End Sub
[/vba]

Автор - AndreTM
Дата добавления - 16.07.2017 в 01:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автозаполнение с протягиванием (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!