Показать сообщение отдельно
Старый 25.05.2009, 11:59     # 608
Alex Dark
КОТовский
 
Аватар для Alex Dark
 
Регистрация: 12.03.2003
Адрес: ОренБюргер
Пол: Male
Сообщения: 1 569

Alex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех Гуру
это 2007 эксель

grooogler, проблемма у тебя в том, что алгоритм не удачный и выполняется два раза.
добавь еще одну колонку с единичками - получится вообще непонятно что

PS Этот код сравнивает любое количество колонок на точное совпадение листа2 с со строкой на листе1 и данные листа1 скидываются соответственно на 3 и 4 листы. т.е если на листе2 будет строка отсутствующая на листе1 то она вообще ни куда не попадет
Код:
Sub Main2()
    Sheets(3).Cells.ClearContents:
    Sheets(4).Cells.ClearContents:
    Sheets(3).Activate
    i = 1
    i3 = 1
    i4 = 1
    Do While Not IsEmpty(Sheets(1).Cells(i, 1).Value)
        j = 1
        Sheets(1).Rows(i).Copy Sheets(3).Rows(i3)
        Sheets(1).Rows(i).Copy Sheets(4).Rows(i4)
        ok2 = 0
        Do While Not IsEmpty(Sheets(2).Cells(j, 1).Value)
            ok = 0
            For ii = 1 To Sheets(1).Cells(i, Columns.Count).End(xlToLeft).Column
                If Sheets(1).Cells(i, ii).Value = Sheets(2).Cells(j, ii).Value Then
                    ok = ok + 1
                End If
            Next
            If ok = Sheets(1).Cells(i, Columns.Count).End(xlToLeft).Column Then
                'совпадение
                Sheets(4).Select
                Rows(i4).Delete
                i3 = i3 + 1
                ok2 = 0
                Exit Do
            Else
                'нет совпадения
                ok2 = ok2 + 1
            End If
            j = j + 1
        Loop
        If ok2 = Sheets(2).Cells(1, Columns.Count).End(xlToLeft).Column Then
            Sheets(3).Select
            Rows(i3).Delete
            i4 = i4 + 1
        End If
        i = i + 1
    Loop
End Sub
__________________
Все мы финансовые гении и эффективные менеджеры,
только не у всех одногруппник или сосед по даче - президент.

Последний раз редактировалось Alex Dark; 25.05.2009 в 13:37. Причина: добавил код
Alex Dark вне форума