powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос по копированию
8 сообщений из 8, страница 1 из 1
Макрос по копированию
    #34342874
@ntony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток, есть проблема, в прикрепленном файле есть образец информации, нужно, чтобы макрос копировал данные на другой лист и при этом, пропуская пустые строки (таковых в данных встречается много, причем они могут быть и по две сразу) и заполняя значения Product Name одинаковыми до последующего. Заранее благодарен. (может это и просто, но я в ВБА исчо новичок ))))
...
Рейтинг: 0 / 0
Макрос по копированию
    #34343311
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub f()
    Dim rng As Range, rng2 As Range, rng3 As Range, i As Long
    Set rng = Cells.Find(What:="Product Name",  LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=True)
    If rng Is Nothing Then Exit Sub
    For i = rng.Row +  1  To Worksheets(rng.Parent.Name).UsedRange.Rows.Count
        If Cells(i, rng.Column) = "" And Cells(i, rng.Column +  1 ) = "" Then
            If rng2 Is Nothing Then
                Set rng2 = Cells(i, rng.Column)
            Else
                Set rng2 = Union(rng2, Cells(i, rng.Column))
            End If
        ElseIf Cells(i, rng.Column) = "" Then
            Cells(i, rng.Column) = rng3
        Else
            Set rng3 = Cells(i, rng.Column)
        End If
    Next
    rng2.EntireRow.Delete
End Sub
...
Рейтинг: 0 / 0
Макрос по копированию
    #34343358
@ntony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
5 Баллов, огромное спс ))))
...
Рейтинг: 0 / 0
Макрос по копированию
    #34343387
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2vkodor
не критика, просто для удобства :-) :
Код: plaintext
Worksheets(rng.Parent.Name)=rng.Worksheet
...
Рейтинг: 0 / 0
Макрос по копированию
    #34343484
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbapro2vkodor
не критика, просто для удобства :-) :
Код: plaintext
Worksheets(rng.Parent.Name)=rng.Worksheet

Спасибо.
Не знал.
...
Рейтинг: 0 / 0
Макрос по копированию
    #34344683
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант без циклов (до 8.192 несмежных областей)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
    Dim rng As Range
    Set rng = Worksheets.Add(, Worksheets("Sheet1")).[A1]
    With Worksheets("Sheet1")
        Intersect(.[A:B], .[B:B].SpecialCells(xlCellTypeConstants).EntireRow).Copy rng
    End With
    With rng.CurrentRegion.SpecialCells(xlCellTypeBlanks)
        .Value = "=R[-1]C"
        .Value = .Value
    End With
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Макрос по копированию
    #34344876
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Еще вариант без циклов (до 8.192 несмежных областей)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
    Dim rng As Range
    Set rng = Worksheets.Add(, Worksheets("Sheet1")).[A1]
    With Worksheets("Sheet1")
        Intersect(.[A:B], .[B:B].SpecialCells(xlCellTypeConstants).EntireRow).Copy rng
    End With
    With rng.CurrentRegion.SpecialCells(xlCellTypeBlanks)
        .Value = "=R[-1]C"
        .Value = .Value
    End With
End Sub


KL
[MVP - Microsoft Excel]
класный вариант
только строка
Код: plaintext
        .Value = .Value
не правильно отрабатывает
во все ячейки с формулами, вставляется значение первой ячейки. (Excel2000 SP3)
...
Рейтинг: 0 / 0
Макрос по копированию
    #34345448
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorтолько строка
Код: plaintext
        .Value = .Value
не правильно отрабатывает
во все ячейки с формулами, вставляется значение первой ячейки. (Excel2000 SP3)

Точно, спасибо за поправку. Код должен быть таким:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Test()
    Dim rng As Range
    Set rng = Worksheets.Add(, Worksheets("Sheet1")).[A1]
    On Error Resume Next
    With Worksheets("Sheet1")
        Intersect(.[A:B], .[B:B].SpecialCells(xlCellTypeConstants).EntireRow).Copy rng
    End With
    With rng.CurrentRegion
        .SpecialCells(xlCellTypeBlanks).Value = "=R[-1]C"
        .Value = .Value
    End With
End Sub
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос по копированию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]