Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменение кода из поиска одинаковых значений в поиск разных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение кода из поиска одинаковых значений в поиск разных (Макросы/Sub)
Изменение кода из поиска одинаковых значений в поиск разных
medved_program Дата: Понедельник, 06.04.2015, 14:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Доброго времени суток. Написал код по поиску одинаковых значений в столбцах на разных листах и выводом результата на 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]
К сообщению приложен файл: 2420362.xlsx (10.6 Kb)


Сообщение отредактировал medved_program - Понедельник, 06.04.2015, 15:09
 
Ответить
СообщениеДоброго времени суток. Написал код по поиску одинаковых значений в столбцах на разных листах и выводом результата на 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]

Автор - medved_program
Дата добавления - 06.04.2015 в 14:40
nilem Дата: Понедельник, 06.04.2015, 15:30 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
например, вот так:
[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
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениенапример, вот так:
[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
[/vba]

Автор - nilem
Дата добавления - 06.04.2015 в 15:30
medved_program Дата: Понедельник, 06.04.2015, 16:33 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
nilem, программа не находит одинаковые значения, а просто копирует все данные с двух столбцов и выводит
 
Ответить
Сообщениеnilem, программа не находит одинаковые значения, а просто копирует все данные с двух столбцов и выводит

Автор - medved_program
Дата добавления - 06.04.2015 в 16:33
nilem Дата: Понедельник, 06.04.2015, 16:53 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
ну да, с Replace чего-то намудрил
вот эту строку
[vba]
Код
Replace s, t, "~"
[/vba]
запишите так
[vba]
Код
s = Replace(s, t, "~")
[/vba]
и тогда получим "...чтобы находил не одинаковые а разные значения" - т.е. значения с обоих листов, исключая повторы.
Или нужно что-то другое?


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениену да, с Replace чего-то намудрил
вот эту строку
[vba]
Код
Replace s, t, "~"
[/vba]
запишите так
[vba]
Код
s = Replace(s, t, "~")
[/vba]
и тогда получим "...чтобы находил не одинаковые а разные значения" - т.е. значения с обоих листов, исключая повторы.
Или нужно что-то другое?

Автор - nilem
Дата добавления - 06.04.2015 в 16:53
medved_program Дата: Понедельник, 06.04.2015, 17:07 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
nilem, большое человеческое спасибо pray
 
Ответить
Сообщениеnilem, большое человеческое спасибо pray

Автор - medved_program
Дата добавления - 06.04.2015 в 17:07
nilem Дата: Понедельник, 06.04.2015, 17:13 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
пожалста :)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениепожалста :)

Автор - nilem
Дата добавления - 06.04.2015 в 17:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение кода из поиска одинаковых значений в поиск разных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!