Excel VBA – 评估 – 匹配三个标准

我正在尝试使用下面的代码来:

  • 从工作簿中的工作表中使用三个因子(因子A,因子B和因子C)(mysheet和mybook),

  • 在第二个工作簿(源表单和源文件)的工作表中search数据集,

  • 并返回与源表单数据中与mysheet中的三个因子相匹配的数据行对应的索引。

索引返回到variablesv,如果没有find与三个标准符合的行,返回错误代码2042。

我已经从我的更大的分支中提取了代码,并将其简化为非特定的。

Sub enter_data() Dim mybook As Workbook, sourcebook As Workbook Dim mysheet As Worksheet, sourcesheet As Worksheet Dim FactorA$, FactorB$, FactorC$ Dim i% Dim v As Variant 'set names for workbooks and worksheets Set mybook = Workbooks("mydatabook.xlsm") Set mysheet = mybook.Sheets("mydatasheet") Set sourcebook = Workbooks("sourcedatasbook.xlsm") Set sourcesheet = sourcebook.Sheets("sourcedatasheet") 'i is incremented and used to go through every line of data I want to extract from - 'I have only included one instance of i for this example i = 3 'create names for search factors FactorA = "'[" & mybook.Name & "]" & mysheet.Name & "'!" & mysheet.Cells(i, 1).Address(False, False) FactorB = "'[" & mybook.Name & "]" & mysheet.Name & "'!" & mysheet.Cells(i, 6).Address(False, False) FactorC = "'[" & mybook.Name & "]" & mysheet.Name & "'!" & mysheet.Cells(i, 3).Address(False, False) Debug.Print " FactorA: " & FactorA, vbCrLf & _ " FactorB: " & FactorB, vbCrLf & _ " FactorC: " & FactorC, vbCrLf 'search for data 'two factor search v = sourcesheet.Evaluate("MATCH(" & FactorA & "&" & FactorB & "&" & FactorC & ", G6:G6000&C6:C6000&D6:D6000, 0)") Debug.Print v 'three factor search v = sourcesheet.Evaluate("MATCH(" & FactorA & "&" & FactorB & ", G6:G6000&C6:C6000, 0)") Debug.Print v 'three factor search using explicit references (this was copied almost directly from a cell in excel v = sourcesheet.Evaluate("MATCH('[mydatabook.xlsm]mydatasheet'!A3&'[mydatabook.xlsm]mydatasheet'!F3&'[mydatabook.xlsm]mydatasheet'!C3, C6:C6000&D6:D6000&G6:G6000, 0)") Debug.Print v End Sub 

我使用的表的列是这样的:

mybook.mysheet:

因子A列B因子C柱子D柱子E因子B

sourcebook.sourcesheet:

A列B列B因素C列E列F因素A

目前:

  • 在第一个debug.print v中,如果某行存在,我得到一个索引,如果没有,则返回错误2042

  • 在第二个debug.print v上,我总是得到一个错误2015

  • 在第三个debug.print v上,我总是得到一个错误2015

第三个debug.print中的函数直接从excel中的一个单元格复制而来,在这里它返回一个索引或者一个#N / A

是否有任何理由为什么第二个和第三个debug.print不会返回索引或错误2042像它应该?

感谢您的任何帮助!