vba - 将工作表数据存储在临时内存中以用于比较 2 excel
问题描述
我有一个 VBA 代码来比较来自 2 张工作表的数据,所以我创建了 vba 代码,但它很慢,所以我想以某种方式将工作表数据存储在临时内存中,而是在它之间切换工作表应该从临时内存中使用。
我的代码-
For i = 2 To F1_iRowMax
Dim RV As Long
RV = 0
' On Error Resume Next
'RV = Application.WorksheetFunction.Match(F1_Workbook.Sheets(ShName).Cells(i, 16384).Value, F2_Workbook.Sheets(ShName2).Range("XFD1:XFD1048576"), 0)
RV = Application.WorksheetFunction.Match(F1_Workbook.Sheets(ShName).Cells(i, 16384).Value, KeyRange, 0)
On Error Resume Next
If Not IsError(RV) Then
Else
End If
Counter = 0
Counter = Counter + 1
pctdone = Counter / F1_iRowMax
With ufProgress
.LabelCaption.Caption = "Comparing Part-1 " & i & " of " & F1_iRowMax
.LabelProgress.Width = pctdone * (.FrameProgress.Width - 10)
End With
If RV <> 0 Then
''''F1 VS F2
' ColumnNumber = iCol_Max
'ColumnLetter = Split(Cells(1, ColumnNumber).Address, "$")(1)
For iCol = 1 To iCol_Max
F1_Data = F1_Workbook.Sheets(ShName).Cells(i, iCol)
F2_Data = F2_Workbook.Sheets(ShName2).Cells(RV, iCol)
'If i = 39100 Then Stop '''for debug
If F1_Data <> F2_Data Then
'
sIdx = sIdx + 1
' ThisWorkbook.Sheets("Summary").Cells(sIdx, 1) = F1_Workbook.Sheets(ShName).Cells(iRow, iCol).Address
ThisWorkbook.Sheets("Summary").Cells(sIdx, 3) = F1_Workbook.Sheets(ShName).Cells(Header, iCol).Value
ThisWorkbook.Sheets("Summary").Cells(sIdx, 1) = F1_Workbook.Sheets(ShName).Cells(i, 16384).Value
ThisWorkbook.Sheets("Summary").Cells(sIdx, 2) = F1_Workbook.Sheets(ShName).Cells(i, 1).Value
ThisWorkbook.Sheets("Summary").Cells(sIdx, 4) = F1_Data
ThisWorkbook.Sheets("Summary").Cells(sIdx, 5) = F2_Data
ThisWorkbook.Sheets("Summary").Cells(sIdx, 6) = "Data Mismatch"
'ThisWorkbook.Sheets("Summary").Cells(sIdx, 3).Select
End If
Next iCol
Else
sIdx = sIdx + 1
ThisWorkbook.Sheets("Summary").Cells(sIdx, 1) = F1_Workbook.Sheets(ShName).Cells(i, 16384).Value
ThisWorkbook.Sheets("Summary").Cells(sIdx, 2) = F1_Workbook.Sheets(ShName).Cells(i, 1).Value
ThisWorkbook.Sheets("Summary").Cells(sIdx, 4) = "Record Exist"
ThisWorkbook.Sheets("Summary").Cells(sIdx, 6) = "No Record Found"
'ThisWorkbook.Sheets("Summary").Cells(sIdx, 3).Select
End If
Next i
我想比较两张纸之间的 40k 行。
解决方案
推荐阅读
- r - 使用xlsx编写excel文件的for循环?
- php - 将 CSV 文件中的数据插入数据库
- php - 在 PHP中单击时,URL 查询字符串参数未显示在 url中
- ios - 权限问题?无法打开文件 - 文件被禁用
- python - 在“名称”列中仅显示一个名称
- python - 尝试使用 tf.keras.utils.plot_model 时,带有 TimeDistributed Layers 的 CNN-LSTM 表现异常
- python - 为什么这里的currentPath[-1]会忽略第一个find_paths_recursive(currentNode.left, required_sum - currentNode.val, currentPath, allPaths)?
- datagrip - javax.net.ssl.SSLHandshakeException:客户端首选项不接受服务器选择的协议版本 TLS10 [TLS13,TLS12]
- google-apps-script - 用不同的列创建一个新数组
- postgresql - 使用动态 SQL 的参数化 PostgreSQL 函数的语法