【发布时间】:2021-01-22 19:00:48
【问题描述】:
寻找一个 VBA 代码,我可以在其中比较来自两个不同 excel 文件的数据并在第三个 excel 文件中添加输出。
文件可以包含它必须验证的 N 列和 N 行。
- 我有一个代码来比较 2 张纸,但我需要如下所示的输出。 (此 vba 代码将打开 excel 文件以读取数据) Output of data after comparing
Sub Compare() Dim WorkRng1 As Range, WorkRng2 As Range, Rng1 As Range, Rng2 As Range Set objWorkbook1 = Workbooks.Open("F:\Learning\Book1.xlsx") Set objWorkbook2 = Workbooks.Open("F:\Learning\Book2.xlsx") Set objWorksheet1 = objWorkbook1.Worksheets(1) Set objWorksheet2 = objWorkbook2.Worksheets(1) Set WorkRng1 = objWorksheet1.UsedRange Set WorkRng2 = objWorksheet2.UsedRange For Each Rng1 In WorkRng1 Rng1.Value = Rng1.Value For Each Rng2 In WorkRng2 If Rng1.Value = Rng2.Value Then Exit For End If Next Next End Sub
这样要求输出
Name_Book1 | Name_Book2 | Compare | Amount_book1 | Amount_book2| Compare Store_1 | Store_1 | Pass | 362 | 420 | Fail Store_2 | Store_2 | Pass | 400 | 360 |Fail Store_3 | Store_3 | Pass | 922 | 520 | Fail Store_4 | Store_4 | Pass | 600 | 320 | Fail Store_5 | Store_5 | Pass | 400 | 400 | Pass
- 其他代码无法打开文件,但我需要比较数据并获得如上所示的输出。
Excel File 1 | Excel File 2 | Output file
Sub GetDataFromSingleCell(单元格作为字符串)
Dim srcCN As Object ' ADODB.Connection Dim srcRS As Object ' ADODB.Recordset Set srcCN = CreateObject("ADODB.Connection") Set srcRS = CreateObject("ADODB.Recordset") srcCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & CStr("F:\Learning\Book1.xlsx") & _ ";" & "Extended Properties=""Excel 12.0;HDR=No;"";" srcRS.Open "SELECT * FROM [Sheet1$" & cell & ":" & cell & "];", srcCN, 3, 1 'adOpenStatic, adLockReadOnly srctxt = srcRS.Fields(0).Value Dim trgCN As Object ' ADODB.Connection Dim trgRS As Object ' ADODB.Recordset Set trgCN = CreateObject("ADODB.Connection") Set trgRS = CreateObject("ADODB.Recordset") trgCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & CStr("F:\Learning\Book2.xlsx") & _ ";" & "Extended Properties=""Excel 12.0;HDR=No;"";" trgRS.Open "SELECT * FROM [Sheet1$" & cell & ":" & cell & "];", trgCN, 3, 1 'adOpenStatic, adLockReadOnly trgtxt = trgRS.Fields(0).Value If srctxt = trgtxt Then Sheet1.Cells(1, 2) = "Passed" Else Sheet1.Cells(1, 2) = "Failed" End If End Sub
输出文件包含 VBA 代码供参考使用。
也许像上面那样读取一个与excel文件相同的txt文件会很好。
【问题讨论】:
-
由于数据量大,无法打开excel文件。所以我需要一个可以帮助我的 VBA 代码。
-
您需要提供更多详细信息,说明您希望如何比较这两个文件。它们的结构是否相同?行的顺序是否相同,两个文件是否包含相同数量的数据?为什么一个比较是“通过”而另一个是“真/假”?这里缺少很多必要的信息。
-
是的。结构化和行的顺序相同。谢谢,更新了那些真/假的东西。