Excel VBA中的索引与匹配
我不知道我在哪里失踪了。我试图提供从excel表中特定行到最后一行的公式。我遇到“无法获取工作表函数类的匹配属性:1004”错误 当我使用worksheetfunction.match时,以及当我使用Application.match时的“运行时错误-13-类型不匹配” 以下是我尝试过的代码:Excel VBA中的索引与匹配,excel,vba,excel-formula,Excel,Vba,Excel Formula,我不知道我在哪里失踪了。我试图提供从excel表中特定行到最后一行的公式。我遇到“无法获取工作表函数类的匹配属性:1004”错误 当我使用worksheetfunction.match时,以及当我使用Application.match时的“运行时错误-13-类型不匹配” 以下是我尝试过的代码: Sub PTO_Calculations() Dim UBSht As Worksheet Dim x As Long 'Variables for PTO Data Dim PTOSht As Wo
Sub PTO_Calculations()
Dim UBSht As Worksheet
Dim x As Long
'Variables for PTO Data
Dim PTOSht As Worksheet
Dim PTORows As Long, PTOCols As Long
Dim PTOOldRows As Long
Dim PTOWholeRange As Range
Dim PTOFirstColumnRange As Range
Dim PTOFirstRowRange As Range
'Variables for Table in UB Sht
Dim UBTable As ListObject
Dim UBTableRows As Long, UBTableCols As Long
Dim UBTableOldRows As Long
Set UBSht = ThisWorkbook.Sheets("UB - US & IND")
Set PTOSht = ThisWorkbook.Sheets("PTO Data")
Set UBTable = UBSht.ListObjects("UB_US_IND")
UBTableRows = UBTable.ListRows.Count + 1
UBTableCols = UBTable.ListColumns.Count
UBTableOldRows = UBTableRows - WorksheetFunction.CountIf(UBSht.Range("A:A"), Format(DateAdd("m", -1, Date), "mmmm - yyyy")) 'UBSht.Range("XFD1").Value
PTORows = PTOSht.Range("A" & Rows.Count).End(xlUp).Row
PTOCols = PTOSht.Cells(1, Columns.Count).End(xlToLeft).Column
Set PTOWholeRange = PTOSht.Range(Cells(1, 1).Address, Cells(PTORows, PTOCols).Address)
Set PTOFirstColumnRange = PTOSht.Range("A:A")
Set PTOFirstRowRange = PTOSht.Range(Cells(1, 1).Address, Cells(1, PTOCols).Address)
'I'M FACING ERROR IN THE BELOW STEP
Range(UBTable.Range(UBTableOldRows + 1, 6), UBTable.Range(UBTableRows, 6)).Value = _
Application.WorksheetFunction.Index(PTOWholeRange, Application.Match([@[Team Member Name]], PTOFirstColumnRange, 0), Application.Match([@Month], PTOFirstRowRange, 0))
end sub
提前感谢您的帮助。第一步,使用对实际单元格的引用,而不是
[@[团队成员姓名]]
和[@Month]
UBTable.Range(UBTableOldRows+1,6)
也不正确。它应该是UBTable.Cells(UBTableOldRows+1,6)
^^^^^就像UBTable.Range(UBTableRows,6)
一样。更重要的是,Index/Match
的结果将是一个值,而不是每行的单独值。我建议切换到使用变量
数组,放弃索引/匹配方法。这意味着匹配
没有找到匹配项。您需要使用iError来测试。。。如前所述,这需要分成几行。保存应用程序的结果。在变量中匹配,测试是否有错误。如果不是,请在索引中使用该变量。