So sánh các ô dữ liệu từ hai tệp độc lập


1

Tôi muốn so sánh các giá trị ô từ hai tệp Excel khác nhau.

Tôi đã thực hiện một chương trình đang hoạt động nếu nó nằm trên cùng một trang. Bây giờ, tôi muốn "bên ngoài" ô đầu tiên. Chương trình nên so sánh từng dòng của một cột với bảng tính khác

Sub Update_production()
    Dim i As Integer, j As Integer, refmiss As Integer, comments As String
    i = 5
    j = 15
    refmiss = 0

    Do while '[Production pallet.xlsx]September'!$A$i.Value <> ""          

        Do While Cells(j, 1).Value <> ""
            If (Cells(i, 1).Value <> Cells(j, 1).Value) Then
                j = j + 1
            Else
                Cells(j, 3).Value = Cells(j, 3).Value + Cells(i, 3).Value
                Cells(j, 4).Value = Cells(j, 4).Value + Cells(i, 4).Value
                j = j + 1
                refmiss = 1
            End If
        Loop
        If (refmiss = 0) Then
            comments = Cells(i, 1).Value
            Range("A15").Select
            ActiveCell.End(xlDown).Select
            ActiveCell.Offset(1, 0).Select
            ActiveCell.Value = comments
            ActiveCell.Offset(0, 2).Value = Cells(i, 3).Value
            ActiveCell.Offset(0, 3).Value = Cells(i, 4).Value
        End If
        refmiss = 0
        i = i + 1
        j = 15
    Loop
End Sub

Cảm ơn bạn trước sự giúp đỡ của bạn (nếu có thể tiếp tục thực hiện, nó có thể thực sự tốt vì tôi không biết sẽ có bao nhiêu dòng trong cả hai bảng tính)

Câu trả lời:


0

Bạn sẽ muốn sử dụng application.worbook.open phương pháp.

Sub Openfilemacro()
Dim myfile As String

myfile = "Path\to\file"

Application.Workbooks.Open Filename:=myfile

End Sub

Sau đó, bạn có thể tham khảo giữa các sổ làm việc để so sánh, chỉ cần chỉ định WB và WS, giống như bạn đã có.

Một cái gì đó như thế này, nhưng thích nghi với bạn -

Sub Openfilemacro()
Dim myfile As String
Dim workbookA As Workbook
Dim workbookB As Workbook
myfile = "Path\to\file"
workbookA = ThisWorkbook
workbookB = Application.Workbooks.Open(Filename:=myfile)

Dim c As Range
For Each c In Workbooks(workbookA).Range("A:A")
    If c = "" Then Exit Sub
        'search workbookB for c.value
        'do stuff

Next

End Sub

Một lưu ý nhanh - bạn có thể muốn tránh sử dụng .selectactivecell tài sản vì nó có thể trở nên lộn xộn. Cố gắng luôn tham chiếu ô thực tế và không cần phải chọn ô. Có lẽ bạn sẽ cần một workbook.activate, nhưng nói chung, không cần thiết phải chọn bất cứ thứ gì hoặc tham chiếu một ô đang hoạt động, đặc biệt là với một for loop đã

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.