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

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

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

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

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

textual
Листинг программы
Option Base 1
 
Sub qweqwe()
Dim Twb As Workbook
Dim Arr, Arr2
Dim Wb As Workbook
Dim Da As Date
Dim s As Long, sC%, jDa%
Dim FName$
 
 
Application.ScreenUpdating = False
 
Set Twb = ThisWorkbook
s = Twb.Sheets(1).Cells(1, 1).End(xlDown).Row
sC = Twb.Sheets(1).Cells(1, 3).End(xlToRight).Column
Arr = Range(Twb.Sheets(1).Cells(1, 1), Twb.Sheets(1).Cells(s, 1))
 
FName = GetFilePath(, Twb.Path)
If FName = "" Then Exit Sub
Set Wb = Workbooks.Open(FName)
 
s = Wb.Sheets(1).Cells(4, 1).End(xlDown).Row
Arr2 = Range(Wb.Sheets(1).Cells(5, 1), Wb.Sheets(1).Cells(s, 2))
Da = Wb.Sheets(1).Cells(3, 2)
For j = 3 To sC
    If CDate(Twb.Sheets(1).Cells(1, j)) = Da Then jDa = j: Exit For
Next j
 
Wb.Close False
 
For i = 3 To UBound(Arr)
    For j = 1 To UBound(Arr2)
        If Arr(i, 1) = Arr2(j, 1) Then
            Twb.Sheets(1).Cells(i, jDa) = Arr2(j, 2)
        End If
    Next j
Next i
 
 
End Sub
 
 
Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
                      Optional ByVal InitialPath As String = "", _
                      Optional ByVal FilterDescription As String = "Книги Excel", _
                      Optional ByVal FilterExtention As String = "*.xlsx*") As String
    On Error Resume Next
     With Application.FileDialog(msoFileDialogOpen)
         .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
         .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
         If .Show <> -1 Then Exit Function
         GetFilePath = .SelectedItems(1): PS = Application.PathSeparator
     End With
 End Function

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


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

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

5   голосов , оценка 4.4 из 5
Похожие ответы