Вывод строк в VBA - VBA (48604)
Формулировка задачи:
Есть на Лист1 колонки "A" и "B" с наименованием. Есть на Лист2 колонки "A" и "B" тоже с наименованием. Кнопка"Сравнить" сравнивает два списка двух листов, и те наименования что есть на Лист1, но нет на Лист2, вывести на Лист3. Код выводит только две колонки "A" и "B". Хотелось бы добить код так, что бы информация с колонок "D","E","G","R","T","V" Листа1 выводилось на Лист3 в колонки "С","D","E","F","G","H".
Код копки "Сравнить":
Листинг программы
- Private Sub CommandButton4_Click()
- Dim s As Worksheet
- Dim a, i&, t$
- a = Sheets("Лист2").[a1].CurrentRegion.Value
- With CreateObject("scripting.dictionary"): .comparemode = 1
- For i = 2 To UBound(a)
- .Item(a(i, 1) & "|" & a(i, 2)) = 0&
- Next
- ii = 1
- a = Sheets("Лист1").[a1].CurrentRegion.Columns(2).Resize(, 2).Value
- For i = 2 To UBound(a)
- t = a(i, 1) & "|" & a(i, 2)
- If Not .exists(t) Then
- ii = ii + 1
- a(ii, 1) = a(i, 1)
- a(ii, 2) = a(i, 2)
- a(ii, 1) = a(i, 1)
- a(ii, 2) = a(i, 2)
- End If
- Next
- End With
- [a1].Resize(ii, 2) = a
- Next
- End If
- End If
- End Sub
Решение задачи: «Вывод строк в VBA»
textual
Листинг программы
- Dim objConnection As Object
- Dim rs As Object
- Dim sqlStr$, i&
- Set objConnection = CreateObject("ADODB.Connection")
- Set rs = CreateObject("ADODB.Recordset")
- objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
- "Data Source=" & ActiveWorkbook.Path & "/" & ActiveWorkbook.Name & ";" & _
- "Extended Properties=""Excel 12.0;HDR=Yes"";"
- sqlStr = "SELECT a2.[Инвентарный номер], a2.[Наименование], a2.[Склад], a2.[Количество], "
- sqlStr = sqlStr & "a2.[Цена за единицу] , a2.[Дата ввода в эксплуатацию], a2.[Местоположение 2], "
- sqlStr = sqlStr & "a2.[Заводской номер] "
- sqlStr = sqlStr & "from [лист1$] as a2 "
- sqlStr = sqlStr & "Where a2.[Инвентарный номер] & a2.[Наименование] not in ("
- sqlStr = sqlStr & "Select a3.[Инвентарный №] & a3.[Наименование] as eee from [лист2$] as a3)"
- rs.Open sqlStr, objConnection, 3, 3
- For i = 0 To rs.Fields.Count - 1
- Sheets("Лист3").Cells(1, i + 1) = rs.Fields(i).Name
- Next i
- Sheets("Лист3").Cells(2, 1).CopyFromRecordset rs
- Set rs = Nothing
- Set objConnection = Nothing
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д