我正在尝试将名称和日期从一个工作表与另一个工作表匹配,并从该工作表中返回相应的单元格值以填充列。
要填充的活动工作表有24000行,而且要匹配和复制的数据的工作表有14645.列是每个中的名称,日期,中断时间(一个中的名称是一个较短的字符串ID,因此使用{{ 1}}(例如“Willia”和“WilliamsA”)。
我的代码大约有200行并结束。不确定是崩溃还是错误。任何帮助表示赞赏。
InStr
答案 0 :(得分:0)
您永远不会使用rcell
,因此您的外部循环可以简单地为For j = 1 To 23999
(或任何大数字)。你的主要问题是,在你的内循环中,你只移动到下一个要比较的单元格如果前一个匹配,尽管有时你会为外部的每次迭代多次这样做环。如果你实际上没有匹配一个单元格,那么对于外循环的剩余迭代,你只是不断尝试匹配不匹配的单元格 - 这是一个毫无意义的练习。
我相信以下内容将实现您的目标:
Sub matchnamedate()
Application.ScreenUpdating = False
Dim i As Long
Dim rcell As Range
Dim rrng As Range
Set rrng = Range("T2:T24000")
For Each rcell In rrng
For i = 2 To 14645
If InStr(1, Worksheets("Max Breaks by Day").Cells(i, 1).Text, rcell.Offset(0, -2).Text) > 0 And _
Worksheets("Max Breaks by Day").Cells(i, 2) = rcell.Offset(0, -1).Value Then
rcell.Value = Worksheets("Max Breaks by Day").Cells(i, 3).Value
'Exit if a match has been found
Exit For
End If
Next i
Next rcell
Application.ScreenUpdating = True
End Sub