Макрос для сравнения данных ячеек одной книги с другой - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пожалуйста, не ругайтесь, я новенький. У меня стоит задача автоматизации отчета по дням. Во вложении я привел данные, с которыми нужно работать. Суть задачи такова, что нужно проверить из Книга2 каждую ячейку первого столбца со всеми ячейками первого столбца из Книга1, и если совпадет, нужно вставить данные ячейки этой же строки второго столбца в найденную строку из Книга1 того столбца, даты которых совпадают (даты прописаны в первой стоке Книга1, а в файле Книга2 в ячейку B3) Заранее благодарен за помощь.Книга1.xlsxКнига2.xlsx

Решение задачи: «Макрос для сравнения данных ячеек одной книги с другой»

textual
Листинг программы
  1. Option Base 1
  2.  
  3. Sub qweqwe()
  4. Dim Twb As Workbook
  5. Dim Arr, Arr2
  6. Dim Wb As Workbook
  7. Dim Da As Date
  8. Dim s As Long, sC%, jDa%
  9. Dim FName$
  10.  
  11.  
  12. Application.ScreenUpdating = False
  13.  
  14. Set Twb = ThisWorkbook
  15. s = Twb.Sheets(1).Cells(1, 1).End(xlDown).Row
  16. sC = Twb.Sheets(1).Cells(1, 3).End(xlToRight).Column
  17. Arr = Range(Twb.Sheets(1).Cells(1, 1), Twb.Sheets(1).Cells(s, 1))
  18.  
  19. FName = GetFilePath(, Twb.Path)
  20. If FName = "" Then Exit Sub
  21. Set Wb = Workbooks.Open(FName)
  22.  
  23. s = Wb.Sheets(1).Cells(4, 1).End(xlDown).Row
  24. Arr2 = Range(Wb.Sheets(1).Cells(5, 1), Wb.Sheets(1).Cells(s, 2))
  25. Da = Wb.Sheets(1).Cells(3, 2)
  26. For j = 3 To sC
  27.     If CDate(Twb.Sheets(1).Cells(1, j)) = Da Then jDa = j: Exit For
  28. Next j
  29.  
  30. Wb.Close False
  31.  
  32. For i = 3 To UBound(Arr)
  33.     For j = 1 To UBound(Arr2)
  34.         If Arr(i, 1) = Arr2(j, 1) Then
  35.             Twb.Sheets(1).Cells(i, jDa) = Arr2(j, 2)
  36.         End If
  37.     Next j
  38. Next i
  39.  
  40.  
  41. End Sub
  42.  
  43.  
  44. Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
  45.                       Optional ByVal InitialPath As String = "", _
  46.                       Optional ByVal FilterDescription As String = "Книги Excel", _
  47.                       Optional ByVal FilterExtention As String = "*.xlsx*") As String
  48.     On Error Resume Next
  49.      With Application.FileDialog(msoFileDialogOpen)
  50.          .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
  51.          .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
  52.          If .Show <> -1 Then Exit Function
  53.          GetFilePath = .SelectedItems(1): PS = Application.PathSeparator
  54.      End With
  55.  End Function

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


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

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

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

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

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

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