代码将列中的每个单元格与另一列中的每个单元格进行比较

我有两个随机时间列,时间来自两个不同的来源,所以列没有相同数量的数据点。 我想从第一列第一次开始,并将其与第二列中的每一次进行比较。 如果有时候有匹配,我想拉相关数据。 find一个匹配之后(如果有的话),我想让代码转到第一列中的第二个单元格,并将其与第二列中的每个值进行比较,依此类推。

这是我到目前为止的代码:

Sub TransferInfo() 'Activate the Sub to Convert and Format Dates Call ConvertDates 'Define Variables Dim st As Worksheet Dim ts As Worksheet Dim lastrow As Long Dim i As Integer j = 2 'Find and set the last used row Set st = ThisWorkbook.Worksheets("Data Table") lastrow = st.Cells(st.Rows.Count, "B").End(xlUp).Row Set ts = ThisWorkbook.Worksheets("ShopFloor") 'Cycle through/compare Row J, Column 18 based on each cell in Row I, Column 14 For i = 2 To lastrow Do Until IsEmpty(ts.Cells(j, 8)) Or IsEmpty(st.Cells(j, 2)) If st.Cells(i, 14).Value = ts.Cells(j, 18).Value Then st.Cells(i, 15).Value = ts.Cells(j, 2).Value Exit Do Else st.Cells(i, 15).Value = "" End If j = j + 1 Loop j = 2 Next i End Sub 

我在本小节开始时调用的另一个小节只是将每列的时间四舍五入到最接近的15分钟的时间间隔,以增加列之间匹配的可能性。

我的问题是:代码不会复制和粘贴任何更多的信息,虽然有两次匹配的两列。 为什么我的代码不工作? 另外,对于更大的数据集,我担心这个代码可能会崩溃Excel,因为我有一个循环内循环尝试处理大量的数据很多次,但我不知道一个更有效的方法来完成我正在尝试没有这个代码。

如果任何人有任何的见解,为什么这个代码不起作用,我将不胜感激任何帮助。

谢谢!

根据你的代码,看起来你只需要一个INDEX / MATCH公式。 在O2中使用它并复制下来:

 =IFERROR(INDEX(B:B,MATCH(N2,R:R,0)),"") 

不需要VBA