powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / скопировать значение в первую пустую строку
7 сообщений из 7, страница 1 из 1
скопировать значение в первую пустую строку
    #36577178
ffflake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста, скопировать выбранные строки одной книги в другую

Есть следующий макрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
For i =  1  To  20 
     If Cells(i,  24 ).Text =  1  Then
     Rows(i).Select
    Selection.Copy
    Windows("обработка макросом.xlsx").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Windows("Аладдин.xls").Activate
     End If
    Next i
как в макросе написать, чтобы найденную строку по условию, вставлял в другую книгу первую пустую строку
...
Рейтинг: 0 / 0
скопировать значение в первую пустую строку
    #36577388
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так. по крайней мере, смысл должен быть ясен.. должно работать, поменяйте названия книг и листов.
Код: plaintext
1.
2.
3.
4.
For i =  1  To  20 
If thisworkbook.worksheets("Лист1").Cells(i,  24 ).value =  1  Then
workbook("обработка макросом.xlsx").worksheets("Лист1").Cells(i,  24 ).value = workbook("Аладдин.xls").worksheets("Лист1").Cells(i,  24 ).value
End If
Next i
...
Рейтинг: 0 / 0
скопировать значение в первую пустую строку
    #36577399
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут много и более действенных примеров на форуме, поищите.
в данном обе книги должны быть открыты. и это самый "тупой" перенос циклом...

если имеете дело с большими объемами данных (от 20 тысяч + частые запуски), логичнее пользоваться MS Query
...
Рейтинг: 0 / 0
скопировать значение в первую пустую строку
    #36577469
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще-то эти строки с введением последней заполненной (вернее первой пустой ячейки в первом столбце) можно заменить на
Код: plaintext
1.
2.
3.
4.
5.
6.
For i =  1  To  20 
If Cells(i,  24 ).Text =  1  Then
Rows(i).Copy Target_.Cells(iLastRow,  1 )
iLastRow = Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 
End If
Next i

Ну а целиком весь код будет таким:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Option Explicit

Sub CopyData()
Dim wb As Workbook
Dim obr As Boolean ' is open "обработка макросом.xlsx"
Dim ObrMa As Workbook ' будет обработка макросом.xlsx Workbook
Dim iLastRow As Long
Dim Target_ As Worksheet, sh As Worksheet
Dim i As Integer

Set sh = ActiveSheet

For Each wb In Workbooks
If wb.Name = "обработка макросом.xlsx" Then obr = True: Set ObrMa = wb: Exit For
Next

If obr = False Then Set ObrMa = Workbooks.Open(ThisWorkbook.Path & "\" & "обработка макросом.xlsx", ReadOnly:=False)

Set Target_ = ObrMa.Sheets( 1 )
iLastRow = Target_.Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 

For i =  1  To  20 
If sh.Cells(i,  24 ).Text =  1  Then
sh.Rows(i).Copy Target_.Cells(iLastRow,  1 )
iLastRow = Target_.Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 
End If
Next i

End Sub


Рассчитано, что обработка макросом.xlsx уже открыт, а если неоткрыт, он откроется, если лежит рядом с файлом с этим кодом. Правда, если там такого файла нет, то будет ошибка.
Код запускать при активном листе, откуда надо копировать.
Код в работе проверил на xls в 2000. Единственное - чистый лист заполняет со 2-ой ячейки. Если надо непременно с 1-ой, тогда до цикла задать iLastRow = 1. Но тогда всегда первую строку всегда будет копировать в первую строку, а остальные в первую пустую.
Можно вот это
Код: plaintext
1.
iLastRow = Target_.Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 
определять непосредственно перед копированием, но тогда скопировать в первую строку листа уже никак не получится.
...
Рейтинг: 0 / 0
скопировать значение в первую пустую строку
    #36577860
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ffflake,

Модератор: для форматирования кода используйте тег SRC.
...
Рейтинг: 0 / 0
скопировать значение в первую пустую строку
    #36579080
zchvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
For i =  1  To  20 
     If Cells(i,  24 ).Text =  1  Then
        Select case (u is nothing)
               Case false
                  set u=Application.Union(u,Rows(i)
               Case else
                  set u=Rows(i) 
        End select
    End if
Next i
set wb=Workbooks.Open <FileName>
set r=wb.Worksheets(<index>).Range("A1")
u.copy r
wb.Close SaveChanges:=True
...
Рейтинг: 0 / 0
скопировать значение в первую пустую строку
    #36579089
zchvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх...! Скобочку пропустил!:(
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / скопировать значение в первую пустую строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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