Доброго времени суток. Написал код по поиску одинаковых значений в столбцах на разных листах и выводом результата на 3 лист, т.е. на первом листе сравнивается столб А со столбом А, который находится на 2 листе, и выводит результат на 3 лист в столб А. И теперь его нужно переделать, т.е. чтобы находил не одинаковые а разные значения. пример я прикрепил
[vba]
Код
Private Sub CommandButton1_Click() Dim lLastRowA As Long Dim lLastRowC As Long Dim i As Long Dim rFind As Excel.Range Dim a, b, c As String a = UserForm1.ComboBox1.Text b = UserForm1.ComboBox2.Text c = UserForm1.ComboBox3.Text Set sh = Sheets.Add lLastRowA = Лист1.Cells(Rows.Count, "A").End(xlUp).Row lLastRowC = Лист2.Cells(Rows.Count, "C").End(xlUp).Row + 1 Application.ScreenUpdating = False For i = 2 To lLastRowA Step 1 Set rFind = Лист2.Columns("A").Find(What:=Лист1.Cells(i, "A").Text, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not rFind Is Nothing Then Лист3.Cells(Sheets(a)RowC, "A").Value = Лист1.Cells(i, "A").Value lLastRowC = lLastRowC + 1 End If Next i MsgBox "Работа программы завершена!", vbInformation Application.ScreenUpdating = True
End Sub
[/vba]
Доброго времени суток. Написал код по поиску одинаковых значений в столбцах на разных листах и выводом результата на 3 лист, т.е. на первом листе сравнивается столб А со столбом А, который находится на 2 листе, и выводит результат на 3 лист в столб А. И теперь его нужно переделать, т.е. чтобы находил не одинаковые а разные значения. пример я прикрепил
[vba]
Код
Private Sub CommandButton1_Click() Dim lLastRowA As Long Dim lLastRowC As Long Dim i As Long Dim rFind As Excel.Range Dim a, b, c As String a = UserForm1.ComboBox1.Text b = UserForm1.ComboBox2.Text c = UserForm1.ComboBox3.Text Set sh = Sheets.Add lLastRowA = Лист1.Cells(Rows.Count, "A").End(xlUp).Row lLastRowC = Лист2.Cells(Rows.Count, "C").End(xlUp).Row + 1 Application.ScreenUpdating = False For i = 2 To lLastRowA Step 1 Set rFind = Лист2.Columns("A").Find(What:=Лист1.Cells(i, "A").Text, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not rFind Is Nothing Then Лист3.Cells(Sheets(a)RowC, "A").Value = Лист1.Cells(i, "A").Value lLastRowC = lLastRowC + 1 End If Next i MsgBox "Работа программы завершена!", vbInformation Application.ScreenUpdating = True
Sub ertert() Dim s$, t$, x, i& With Sheets("Sheet1") s = "~" & Join(Application.Transpose(.Range("A1", .Cells(Rows.Count, 1).End(xlUp))), "~") & "~" End With With Sheets("Sheet2") x = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)) End With
For i = 1 To UBound(x) t = "~" & x(i, 1) & "~" If InStr(s, t) Then Replace s, t, "~" Else s = s & x(i, 1) & "~" End If Next i
x = Split(Mid(s, 2, Len(s) - 2), "~") Sheets("Sheet3").Range("A1").Resize(UBound(x) + 1).Value = Application.Transpose(x) End Sub
[/vba]
например, вот так: [vba]
Код
Sub ertert() Dim s$, t$, x, i& With Sheets("Sheet1") s = "~" & Join(Application.Transpose(.Range("A1", .Cells(Rows.Count, 1).End(xlUp))), "~") & "~" End With With Sheets("Sheet2") x = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)) End With
For i = 1 To UBound(x) t = "~" & x(i, 1) & "~" If InStr(s, t) Then Replace s, t, "~" Else s = s & x(i, 1) & "~" End If Next i
x = Split(Mid(s, 2, Len(s) - 2), "~") Sheets("Sheet3").Range("A1").Resize(UBound(x) + 1).Value = Application.Transpose(x) End Sub
ну да, с Replace чего-то намудрил вот эту строку [vba]
Код
Replace s, t, "~"
[/vba] запишите так [vba]
Код
s = Replace(s, t, "~")
[/vba] и тогда получим "...чтобы находил не одинаковые а разные значения" - т.е. значения с обоих листов, исключая повторы. Или нужно что-то другое?
ну да, с Replace чего-то намудрил вот эту строку [vba]
Код
Replace s, t, "~"
[/vba] запишите так [vba]
Код
s = Replace(s, t, "~")
[/vba] и тогда получим "...чтобы находил не одинаковые а разные значения" - т.е. значения с обоих листов, исключая повторы. Или нужно что-то другое?nilem