|
|
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
Помогите решить такую проблему. Мне необходимо перенести информацию из одного листа Excel в другой (всего - 2 листа). Если значения двух ячеек одного листа совпадают с значениями второго, то значение третьей ячейки должно перенестись в соответствующий столбец второго листа. Ниже привожу рабочий код, но работате он как черепаха (200 записей за 5 минут). ' ==== Sub transfer_macro() stroka = 4 stroka1 = 4 Spisok_from = "Лист1" Spisok_into = "Лист2" ActiveWorkbook.ActiveSheet.Cells(1, 1).Select Do While Sheets(Spisok_from).Cells(stroka, 2) <> "" Or Sheets(Spisok_from).Cells(stroka, 3) <> "" Or Sheets(Spisok_from).Cells(stroka, 1) <> "" dogovor = Sheets(Spisok_from).Cells(stroka, 2) ' Spisok_from kod_sch = Sheets(Spisok_from).Cells(stroka, 4) pokaz_1 = Sheets(Spisok_from).Cells(stroka, 28) With Worksheets(Spisok_into).Range("a:bb") 'Spisok_into Worksheets(Spisok_into).Activate stroka1 = 4 Do While Sheets(Spisok_into).Cells(stroka1, 2) <> "" Or Sheets(Spisok_into).Cells(stroka1, 3) <> "" Or Sheets(Spisok_into).Cells(stroka1, 1) <> "" dog_2 = Sheets(Spisok_into).Cells(stroka1, 2).Value 'Spisok_into kod_s_2 = Sheets(Spisok_into).Cells(stroka1, 4).Value pokaz_2 = Sheets(Spisok_into).Cells(stroka1, 28).Value If dog_2 = dogovor And kod_s_2 = kod_sch Then ActiveCell.Select If pokaz_1 <> "" Then Sheets(Spisok_into).Cells(stroka1, 28).Value = pokaz_1 End If Sheets(Spisok_into).Cells(stroka1, 28).Activate End If stroka1 = stroka1 + 1 Loop End With stroka = stroka + 1 Loop End Sub ' ============================= Помогите оптимизировать, пожалуйста. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2006, 22:24:44 |
|
||
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
Тормозит скорее всего Activate - активная ячейка туда-сюда прыгает. Избегать следует Activate и Select в макросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 09:01:19 |
|
||
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
А еще можно автопересчет вырубить предварительно. Тоже оч полезно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 09:11:11 |
|
||
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
Это в начале модуля написать Код: plaintext 1. 2. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 09:15:48 |
|
||
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
попробуй Код: 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. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 09:22:57 |
|
||
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
Спасибо за код, но цикл крутится на одном месте. Т.е. есть колонки: dogovor kod_sch pokaz1 1001 1 15 1001 2 18 1002 1 10 Так вот, он вписывает соответствующие значения по договору 1001, но не переходит на договор 1002. Я пытался изменить условие, но не получилось. Зацикливание происходит на стадии: Set rng = .Range("B:B").FindNext(rng) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 10:47:15 |
|
||
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
пардон ошибся надо адрес firstAddress = rng.Address определять до цикла Код: 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. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 11:09:13 |
|
||
|
Перенос данных с одного листа на другой
|
|||
|---|---|---|---|
|
#18+
Все работает отлично, благодарю. 6000 строк за 60 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 21:12:23 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=33933594&tid=2184417]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 362ms |

| 0 / 0 |
