Вывод строк в 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". Код копки "Сравнить":
Листинг программы
  1. Private Sub CommandButton4_Click()
  2. Dim s As Worksheet
  3. Dim a, i&, t$
  4. a = Sheets("Лист2").[a1].CurrentRegion.Value
  5. With CreateObject("scripting.dictionary"): .comparemode = 1
  6. For i = 2 To UBound(a)
  7. .Item(a(i, 1) & "|" & a(i, 2)) = 0&
  8. Next
  9. ii = 1
  10. a = Sheets("Лист1").[a1].CurrentRegion.Columns(2).Resize(, 2).Value
  11. For i = 2 To UBound(a)
  12. t = a(i, 1) & "|" & a(i, 2)
  13. If Not .exists(t) Then
  14. ii = ii + 1
  15. a(ii, 1) = a(i, 1)
  16. a(ii, 2) = a(i, 2)
  17. a(ii, 1) = a(i, 1)
  18. a(ii, 2) = a(i, 2)
  19. End If
  20. Next
  21. End With
  22. [a1].Resize(ii, 2) = a
  23. Next
  24. End If
  25. End If
  26. End Sub

Решение задачи: «Вывод строк в VBA»

textual
Листинг программы
  1. Dim objConnection As Object
  2. Dim rs As Object
  3. Dim sqlStr$, i&
  4. Set objConnection = CreateObject("ADODB.Connection")
  5. Set rs = CreateObject("ADODB.Recordset")
  6. objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
  7. "Data Source=" & ActiveWorkbook.Path & "/" & ActiveWorkbook.Name & ";" & _
  8. "Extended Properties=""Excel 12.0;HDR=Yes"";"
  9. sqlStr = "SELECT a2.[Инвентарный номер], a2.[Наименование], a2.[Склад], a2.[Количество], "
  10. sqlStr = sqlStr & "a2.[Цена за единицу] , a2.[Дата ввода в эксплуатацию], a2.[Местоположение 2], "
  11. sqlStr = sqlStr & "a2.[Заводской номер] "
  12. sqlStr = sqlStr & "from [лист1$] as a2 "
  13. sqlStr = sqlStr & "Where a2.[Инвентарный номер] & a2.[Наименование] not in ("
  14. sqlStr = sqlStr & "Select a3.[Инвентарный №] & a3.[Наименование] as eee from [лист2$] as a3)"
  15. rs.Open sqlStr, objConnection, 3, 3
  16. For i = 0 To rs.Fields.Count - 1
  17. Sheets("Лист3").Cells(1, i + 1) = rs.Fields(i).Name
  18. Next i
  19. Sheets("Лист3").Cells(2, 1).CopyFromRecordset rs
  20. Set rs = Nothing
  21. Set objConnection = Nothing

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут