powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / копия определённых столбцов
25 сообщений из 30, страница 1 из 2
копия определённых столбцов
    #34791484
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
Sub stolbec()
Const List1 = "K1"
Const List2 = "H bb"
Dim ww As Integer
Dim wwCTOL As Integer


Application.ScreenUpdating = False
Sheets(List1).Activate

Range("a1").Select

wwCTOL =  0 
ww =  0 

        Do Until ww = ActiveSheet.UsedRange.Columns.Count
            If ActiveCell.Value = "Месяц" Or ActiveCell.Value = "Работник1" _
            Or ActiveCell.Value = "Работник1" Or ActiveCell.Value = "xp" Then

                Selection.EntireColumn.Copy
                Sheets(List2).Activate

                 ActiveSheet.PasteSpecial xlValues  '******** здесь выдаёт ошибку

                ActiveCell.Offset( 0 ,  1 ).Select
                Sheets(List1).Select
                 ActiveCell.Offset( 0 ,  1 ).Select
                 wwCTOL = wwCTOL +  1 
                 Else
                 ActiveCell.Offset( 0 ,  1 ).Select
            End If
        ww = ww +  1 
        Loop
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "bylo skopirowano " & wwCTOL & "  stolbcow"

End Sub

копирую столбцы только с определенными названиями ("Месяц", "Работник1", "Авто", "xp")
с одного листа в другой - всё это в одном и том же файле.
Макрос не работает.
Подскажите, пожалуйста, где и на что исправить, чтобы заработало?

Файл приложил.
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34791769
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На этом форуме уже ни раз говорилось, что не стоит использовать Select без особой нужды,
и ещё алгаритм с методом find гораздо быстрее работает (проверено врнменем).
Код: 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.
Sub stolbec()
    Const List1 = "K1"
    Const List2 = "H bb"
    Dim i As Integer
    Dim mList( 3 ) As String
    Dim xlSh1 As Worksheet, xlSh2 As Worksheet, rng As Range
    mList( 0 ) = "Месяц"
    mList( 1 ) = "Работник1"
    mList( 2 ) = "Авто"
    mList( 3 ) = "xp"
    
    Set xlSh1 = Worksheets(List1)
    Set xlSh2 = Worksheets(List2)
    
    For i =  0  To UBound(mList)
        Set rng = xlSh1.Range("1:1").Find(mList(i), xlSh1.Range("A1"), LookIn:=xlFormulas, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
        If Not rng Is Nothing Then
            rng.EntireColumn.Copy
            xlSh2.Cells( 1 , xlSh2.Cells( 1 , Columns.Count).End(xlToLeft).Column +  1 ).PasteSpecial xlValues
        Else
            MsgBox "Не найден параметр " & mList(i)
        End If
    Next
    Application.CutCopyMode = False
    MsgBox "bylo skopirowano " & wwCTOL & "  stolbcow"

End Sub
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792012
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodorНа этом форуме уже ни раз говорилось, что не стоит использовать Select без особой нужды,
и ещё алгаритм с методом find гораздо быстрее работает (проверено врнменем).


Большое спасибо!

Копируются все столбцы по заданным параметрам.
Только вот после вставки в листе =H bb= 1-й столбец пустой.

Это исправляю вот этим:

Код: plaintext
1.
Range("a:a").Select
Selection.Delete

А всё-таки, почему появляется пустой столбец?


А здесь что происходит?
Код: plaintext
1.
2.
3.
Set rng = xlSh1.Range("1:1").Find(mList(i), xlSh1.Range("A1"), LookIn:=xlFormulas, LookAt:= _
          xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
      ....
         xlSh2.Cells( 1 , xlSh2.Cells( 1 , Columns.Count).End(xlToLeft).Column +  1 ).PasteSpecial xlValues
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792140
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nPUBETЭто исправляю вот этим:

Код: plaintext
1.
Range("a:a").Select
Selection.Delete

как-то не красиво, ну тебе выбирать, только начни хотябы не использовать "select"
Код: plaintext
Range("a:a").Delete
это тоже самое что и ты написал

а лучше
Код: plaintext
xlSh2.Range("a:a").Delete
т.к.
Код: plaintext
Range("a:a").Delete
ссылается на активный лист, а тебе надо на "H bb"
Код: plaintext
Set xlSh2 = Worksheets(List2)
этой строкой мы присвоили обьектной переменной "xlSh2" лист под названием "H bb"

nPUBET
А всё-таки, почему появляется пустой столбец?

дело в том что строка
Код: plaintext
xlSh2.Cells( 1 , Columns.Count).End(xlToLeft).Column

вернет "1" и при заполненом столбце и при пустом (увы прими как должное)
лучше наверно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        If Not rng Is Nothing Then
            If xlSh2.Cells( 1 , 1 ) = "" Then
                mCol =  1 
            Else
                mCol = xlSh2.Cells( 1 , Columns.Count).End(xlToLeft).Column +  1 
            End If
            rng.EntireColumn.Copy
            xlSh2.Cells( 1 , mCol ).PasteSpecial xlValues
        Else
            MsgBox "Не найден параметр " & mList(i)
        End If
nPUBETА здесь что происходит?

Код: plaintext
1.
2.
3.
Set rng = xlSh1.Range("1:1").Find(mList(i), xlSh1.Range("A1"), LookIn:=xlFormulas, LookAt:= _
          xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
      ....
         xlSh2.Cells( 1 , xlSh2.Cells( 1 , Columns.Count).End(xlToLeft).Column +  1 ).PasteSpecial xlValues

Спомощью метода Find c параметрами искать "ячейку целиком" (LookAt:=xlWhole) и "Учитывать регистр" (MatchCase:=True) мы ищем значение mList(i) (которое переберается по очереди) и присваиваем обьектной переменной "rng" найденую ячейку, а дальше проверяем её на Nothing
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792148
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если количество параметров mList(i) увеличиваю до 4 (т.е. i=0,1,2,3,4):

Код: plaintext
1.
2.
3.
4.
    mList( 0 ) = "Месяц"
    mList( 1 ) = "Работник1"
    mList( 2 ) = "Работник2"
    mList( 3 ) = "Авто"
    mList( 4 ) = "xp"

выходит ошибка 9 и код перестаёт копировать.

Как эту ошибку устранить?
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792161
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nPUBETесли количество параметров mList(i) увеличиваю до 4 (т.е. i=0,1,2,3,4):

Код: plaintext
1.
2.
3.
4.
    mList( 0 ) = "Месяц"
    mList( 1 ) = "Работник1"
    mList( 2 ) = "Работник2"
    mList( 3 ) = "Авто"
    mList( 4 ) = "xp"

выходит ошибка 9 и код перестаёт копировать.

Как эту ошибку устранить?
В начале мы обьявили массив, измени размерность массива
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792175
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor nPUBETесли количество параметров mList(i) увеличиваю до 4 (т.е. i=0,1,2,3,4):

выходит ошибка 9 и код перестаёт копировать.

Как эту ошибку устранить?
В начале мы обьявили массив, измени размерность массива

OK.
Большое спасибо!

...понял

Код: plaintext
Dim mList( 20 ) As String
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792197
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor .....
....
nPUBET
А всё-таки, почему появляется пустой столбец?

дело в том что строка
Код: plaintext
xlSh2.Cells( 1 , Columns.Count).End(xlToLeft).Column

вернет "1" и при заполненом столбце и при пустом (увы прими как должное)


тоже хорошо :)
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792210
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, читать так
vkodor
дело в том что строка
Код: plaintext
xlSh2.Cells( 1 , Columns.Count).End(xlToLeft).Column

вернет "1" и при заполненом первом столбце и при пустом (увы прими как должное)
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792239
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
xlSh2.Range("B:L").Select
    Selection.Clear


Код: plaintext
xlSh2.Range("B:L").Clear

А почему в этих 2-х случаях выходит ошибка ' 91 ' ?
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792284
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nPUBET
Код: plaintext
1.
xlSh2.Range("B:L").Select
    Selection.Clear


Код: plaintext
xlSh2.Range("B:L").Clear

А почему в этих 2-х случаях выходит ошибка ' 91 ' ?
если переменная "xlSh2" определена, то нет никакой ошибки
наверно ставишь до строки
Код: plaintext
Set xlSh2 = Worksheets(List2)
Описание кодов ошибок
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792404
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor ...если переменная "xlSh2" определена, то нет никакой ошибки
наверно ставишь до строки
Код: plaintext
Set xlSh2 = Worksheets(List2)
...

Ты абсолютно прав...

(те 2 варианта строк были
действительно выше, т.е. до назначения переменной xlSh2)
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792572
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
Sub del2()

Dim r As Range
Dim n As Integer
Dim gh As Long
Sheets("H bb").Activate
Application.ScreenUpdating = False
gh = ActiveSheet.UsedRange.Rows.Count '*****
                                
Set r = Range("a2:k2")

For n =  1  To gh          '****
    If r.Cells(n,  6 ).Value = r.Cells(n,  7 ).Value = r.Cells(n,  8 ).Value = r.Cells(n,  9 ).Value Then
    Cells(n,  6 ).Offset( 1 ,  0 ).Interior.ColorIndex =  37 
'
'
'    If Cells(n, 6).Offset(1, 0).Interior.ColorIndex = 37 Then
     Cells(n,  6 ).Offset( 1 ,  0 ).EntireRow.Delete
        
'    Exit For

    'End If
    'Else
    
    End If
'    n = n + 1
Next n

End Sub

код удаляет строки, если значеня в ячейках столбцов с 6-го по 9-й равны
(эти ячейки у меня равны 0, но условие равны нулю не смог сформулировать).
Так вот для удаления этих пустых строк я должен постоянно
кликать на кнопку запуска макроса, иначе не идёт.

Подскажите, пожалуйста, как сформулировать шаг цикла:
удаляю строки, если значеня в
ячейках столбцов с 6-го по 9 - й равны (=если есть идеи, то= нулю)?
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34792664
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nPUBET
Код: plaintext
Sub del2()..

код удаляет строки, если значеня в ячейках столбцов с 6-го по 9-й равны
(эти ячейки у меня равны 0, но условие равны нулю не смог сформулировать).
Так вот для удаления этих пустых строк я должен постоянно
кликать на кнопку запуска макроса, иначе не идёт.

Подскажите, пожалуйста, как сформулировать шаг цикла:
удаляю строки, если значеня в
ячейках столбцов с 6-го по 9 - й равны (=если есть идеи, то= нулю)?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
For n =  1  To gh         
    If r.Cells(n,  6 ).Value = r.Cells(n,  7 ).Value = r.Cells(n,  8 ).Value = r.Cells(n,  9 ).Value Then
    'Cells(n, 6).Offset(1, 0).Interior.ColorIndex = 37
    Cells(n,  6 ).Offset( 1 ,  0 ).EntireRow.Delete
    
    Else            '********!
    ActiveCell.Offset( 1 ,  0 ).Select  '********!
  
End If
Next n

даже так не помогает...
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34793241
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй такой алгоритм.
При выполнении условия не удалять строку а накапливать их в некую переменную,
а после выполнения цикла разом удалить все строки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub del2()

    Dim rng As Range
    Dim n As Integer
    Dim xlSh As Worksheet
    
    Set xlSh = Sheets("H bb")

    For n =  2  To xlSh.UsedRange.Rows.Count
        If xlSh.Cells(n,  6 ).Text = "0" And _
            xlSh.Cells(n,  7 ).Text = "0" And _
            xlSh.Cells(n,  8 ).Text = "0" And _
            xlSh.Cells(n,  9 ).Text = "0" Then
            If rng Is Nothing Then
                Set rng = xlSh.Cells(n,  6 )
            Else
                Set rng = Union(rng, xlSh.Cells(n,  6 ))
            End If
        End If
    Next
    If Not rng Is Nothing Then rng.EntireRow.Delete
End Sub
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34793465
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!

С нулями код у меня не работает. Не знаю, почему. Может дело в формате ...
Т.е запускаю макрос - никаких движений
(пустые строки не удаляются, никаких изменений в таблице не происходит),
даже ошибки не выдаёт.


А вот так, прохoдит:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  ....
  Set xlSh = Sheets("H bb")

    For n =  2  To xlSh.UsedRange.Rows.Count
     If xlSh.Cells(n,  6 ).Value = xlSh.Cells(n,  7 ).Value = xlSh.Cells(n,  8 ).Value = _
            xlSh.Cells(n,  9 ).Value Then
    
'        If xlSh.Cells(n, 6).Text = "0" And _
'            xlSh.Cells(n, 7).Text = "0" And _
'            xlSh.Cells(n, 8).Text = "0" And _
'            xlSh.Cells(n, 9).Text = "0" Then
'
            '**************
            If rng Is Nothing Then
            Set rng = xlSh.Cells(n,  6 )
....

И скорость приличная. Еще раз спасибо!
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34793544
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ячейки пустые, то условие пишут так
Код: plaintext
Cells( 1 , 1 ) = ""
если в результате вычисления формул или каких-либо др. действий в ячейке 0
то так
Код: plaintext
Cells( 1 ,  1 ) =  0 
но нужно понимать что при таком условии удалятся и пустые строки тоже
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34793648
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  ...   If xlSh.Cells(dr,  6 ).Value = xlSh.Cells(dr,  7 ).Value = xlSh.Cells(dr,  8 ).Value = _
            xlSh.Cells(dr,  9 ).Value Or xlSh.Cells(dr,  3 ).Text = "C101*" Then
    
          '   If xlSh.Cells(dr, 3).Value = "C101*" Then '**
            If pnk Is Nothing Then
                Set pnk = xlSh.Cells(dr,  6 )
            Else
                Set pnk = Union(pnk, xlSh.Cells(dr,  6 ))
            End If
        End If
        'End If ...'**

удаляю строки, если ячейки в 3-ем столбце
содержат значение "C101*" (т.е. C101 плюс какой-то текст или какие-то цифры).
Не удаляется (ни ошибки, ни движний)...
Пробовал 2 варианта:
- вместе через =OR= (как наверxу)
- отдельно через = if ..then... end if= (строки помечены *)

Где я не так сформулировал?
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34793785
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно использовать оператор Like
Код: plaintext
 xlSh.Cells(dr,  3 ).Text Like "C101*" 
но не забывайте этот оператор значительно замедляет работу (т.е. при многочисленном использовании лучше продумать другой вариант) например
Код: plaintext
Mid(xlSh.Cells(dr,  3 ).Text,  1 ,  3 ) = "C101"
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34793819
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodorнужно использовать оператор Like
Код: plaintext
 xlSh.Cells(dr,  3 ).Text Like "C101*" 
но не забывайте этот оператор значительно замедляет работу (т.е. при многочисленном использовании лучше продумать другой вариант) например
Код: plaintext
Mid(xlSh.Cells(dr,  3 ).Text,  1 ,  3 ) = "C101"


Спасибо!

Вот так работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
....
    If Not pnk Is Nothing Then pnk.EntireRow.Delete
    
            'Sub del_C()
        
        Dim ctr As Range
        Dim cti As Integer
        Set ctr = Range("a1:k1")
        Set xlSh = Sheets("H bb")
        For cti =  1  To xlSh.UsedRange.Rows.Count
            If ctr.Cells(cti,  3 ).Text Like "*C101*" Then
            ctr.Cells(cti,  3 ).EntireRow.Delete
            End If
        Next cti
        Application.ScreenUpdating = True
            'End Sub
....
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34793967
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
    ....Dim xlSh As Worksheet
      Application.ScreenUpdating = False
....
            Else
                Set pnk = Union(pnk, xlSh.Cells(dr,  6 ))
            End If
        End If
        'End If '**
       ' if pnk.Cells(dr,3).Value="C101"
    Next
    If Not pnk Is Nothing Then pnk.EntireRow.Delete
    
            'Sub del_C()
        
        Dim ctr As Range
        Dim cti As Integer
        Set ctr = Range("a1:k1")
        Set xlSh = Sheets("H bb")
        For cti =  1  To xlSh.UsedRange.Rows.Count
            If ctr.Cells(cti,  3 ).Text Like "*C101*" Then
            ctr.Cells(cti,  3 ).EntireRow.Delete
            End If
        Next cti
        Application.ScreenUpdating = True
        
        'End Sub
End Sub

Всё обьединил.
Обрабатываю около 800 строк.
Операция занимает примерно 3 минуты (Excel 2003).

Это нормально?
Можно, как-нибудь ускорить процесс?


P.S.
Еще заметил, что =Sub del_C= не удаляет с одного раза все =*C101*=. Приходится опять несколько раз кликать на =ComButton=...
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34794345
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nPUBET
Это нормально?
Можно, как-нибудь ускорить процесс?

Нормально ли это? Вам решать. У каждого свои запросы.
Ускорить можно.
1. Если делаешь два пробега то, не надо использовать
Код: plaintext
For n =  2  To xlSh.UsedRange.Rows.Count
а использовать.
Код: plaintext
    For n =  2  To xlSh.Cells(Rows.Count,  6 ).End(xlUp).Row
2. не использовать Like (см. пост выше)
3. лучше делать все в одном пробеге
Код: 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.
Sub del2()

    Dim rng As Range
    Dim n As Integer
    Dim xlSh As Worksheet
    Dim fl As Boolean
    
    Set xlSh = Sheets("H bb")

    For n =  2  To xlSh.Cells(Rows.Count,  6 ).End(xlUp).Row
        fl = False
        If xlSh.Cells(n,  6 ) =  0  And xlSh.Cells(n,  7 ) =  0  And _
            xlSh.Cells(n,  8 ) =  0  And xlSh.Cells(n,  9 ) =  0  Then
            fl = True
        ElseIf xlSh.Cells(n,  3 ).Text Like "*C101*" Then
            fl = True
        End If
        If fl Then
            If rng Is Nothing Then
                Set rng = xlSh.Cells(n,  6 )
            Else
                Set rng = Union(rng, xlSh.Cells(n,  6 ))
            End If
        End If
    Next
    If Not rng Is Nothing Then rng.EntireRow.Delete
End Sub
4. можно делать все через Find (отдельный вопрос)


nPUBET
P.S.
Еще заметил, что =Sub del_C= не удаляет с одного раза все =*C101*=. Приходится опять несколько раз кликать на =ComButton=...
Естественно.
Сами подумайте вот код:
Код: plaintext
1.
2.
3.
4.
        For cti =  1  To xlSh.UsedRange.Rows.Count ' допустим cti = 3
            If ctr.Cells(cti,  3 ).Text Like "*C101*" Then 
            ctr.Cells(cti,  3 ).EntireRow.Delete ' при удалении то что было на 4-ой строке стало на третьей т.к. 3-я удалилась далее счетчик прибавит на 1 cti станет 4, следовательно та строка которая переместилась на 3-ю вообще не просматриваится.
            End If
        Next cti  ' прибавление счетчика 

Повторюсь, используйте алгоритм накопления.
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34794375
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nPUBET....

Всё обьединил.
Обрабатываю около 800 строк.
Операция занимает примерно 3 минуты (Excel 2003).
Это нормально?
Можно, как-нибудь ускорить процесс?
P.S.
Еще заметил, что =Sub del_C= не удаляет с одного раза все =*C101*=.
Приходится опять несколько раз кликать на =ComButton=...

знаете, что я придумал...
Я заменил
Код: plaintext
Delete
на
Код: plaintext
ClearContents
и в самом конце
включил сортировку по 3-ему столбцу.
Вот мои замеры скорости (применяю Like, около 800 строк):
1. Вариант с =Delete=: 00:05:39 - 00:09:31.
2. Вариант с =ClearContents= плюс сортировка: 00:03:44 - 00:05:11.
Значительная экономия времени :)


Подскажите, пожалуйста, как заполнить все ячейки (кроме А1)
до =ActiveSheet.UsedRange.Rows.Count=
в 1-ом столбце значением "Сентябрь" ?
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34794393
nPUBET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor.....

Повторюсь, используйте алгоритм накопления.

Спасибо!
изучаю...
...
Рейтинг: 0 / 0
копия определённых столбцов
    #34794423
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nPUBET

Подскажите, пожалуйста, как заполнить все ячейки (кроме А1)
до =ActiveSheet.UsedRange.Rows.Count=
в 1-ом столбце значением "Сентябрь" ?


Код: plaintext
Range(Cells( 2 , 1 ), Cells(ActiveSheet.UsedRange.Rows.Count, 1 )) = "Сентябрь"
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / копия определённых столбцов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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