将行中的每个值复制到值匹配的另一个工作簿?

我有两个工作簿。

练习册A

Supplier Name Date Supplier A Jun-17 Supplier B Jun-17 Supplier C May-17 

工作簿B

 Supplier Name Supplier A Supplier B 

我试图复制所有供应商的名称,他们匹配的date6月17日。 Jun-17写在B1单元(资产)上。

我收到一个错误

 Object doesn't support this property or method. 

在这一行上:

 If ThisWorkbook.Worksheets(1).Format(Range("O" & j).Value, "mmm") = ThisWorkbook.Worksheets("assets").Range("b1").Value Then 

我的代码:

 Sub Monthly() On Error Resume Next UserForm1.Show If Format(Range("O211").Value, "mmm") = Worksheets("assets").Range("b1").Value Then MsgBox "Yes" End If Dim WB As Workbook On Error Resume Next Set WB = Workbooks("PAI Monthly Audits.xlsx") On Error GoTo 0 If WB Is Nothing Then Set WB = Workbooks.Open("G:\QUALITY ASSURANCE\03_AUDITS\PAI\templates\PAI Monthly Audits.xlsx", UpdateLinks:=False) End If With ThisWorkbook.ActiveSheet LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row j = 6 For i = 2 To LastRow If ThisWorkbook.Worksheets(1).Format(Range("O" & j).Value, "mmm") = ThisWorkbook.Worksheets("assets").Range("b1").Value Then .Range("B" & i).Value = ThisWorkbook.Worksheets(1).Range("B" & j).Value j = j + 1 End If Next i End With End Sub 

请有人告诉我我要去哪里错了吗?

试试像这样…

 If Format(ThisWorkbook.Worksheets(1).Range("O" & j).Value, "mmm") = ThisWorkbook.Worksheets("assets").Range("b1").Value Then 

运行时错误可以用已经提出的build议来纠正( ThisWorkbook.Worksheets(1)应该用于标识Range("O" & j)的父项,而不是Format ),但这并不意味着你的代码将工作。 作为真实date, 17-Jun-2017的原始价值为42903。 Format(42903, "mmm")返回"Jun"作为文本string。 文俊等于42903。

如果资产!B1和“工作簿A”列O中的date都是真实的date,那么您只需要比较它们的原始值“ 复制所有与date相匹配的供应商名称 ”。

 If ThisWorkbook.Worksheets(1).Range("O" & j).Value2 = ThisWorkbook.Worksheets("assets").Range("b1").Value2 Then 

除此之外,使用AutoFilterselect2017年6月17日的所有行将会更有效率。 请参阅使用单元格值作为date范围自动筛选器 。 即使使用INDEX / MATCH函数对封闭的工作簿可能更可取。