新的工作表和多列的VBA FormulaR1C1属性

恐怕我不能在另一张表中find多个列的时候我的头围绕着FormulaR1C1属性,我有这些公式(非常慢)自动填充:

LastRow = Range("A" & Rows.Count).End(xlUp).Row Range("F2:F" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(R2,LU!C[1]:C[5]),"""")" Range("F2:F" & LastRow).Formula = _ "=IFERROR(VLOOKUP(A2,LU!A:E,2,true),"""")" Range("G2:G" & LastRow).Formula = _ "=IFERROR(VLOOKUP(A2,LU!A:E,3,true),"""")" Range("H2:H" & LastRow).Formula = _ "=IFERROR(VLOOKUP(A2,LU!A:E,4,true),"""")" Range("I2:I" & LastRow).Formula = _ "=IFERROR(VLOOKUP(A2,LU!A:E,5,true),"""")" Range("J2:J" & LastRow).Formula = _ "=COUNTIF(A:A,'Pivot Counter'!A7)" 

你可以看到在顶部的公式,我试图没有成功。 我不断得到一个应用程序定义的错误,但不太了解该属性来解决它。

公式

Range("F2:F" & LastRow).Formula ="=IFERROR(VLOOKUP(A2,LU!A:E,2,true),"""")"

转换为R1C1参考风格是

 Range("F2:F" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-5],LU!C[-5]:C[-1],2,True),"""")" 

要完全理解它,考虑以下几点:

  1. 您input公式的单元格位置是起点
  2. 起始栏是F
  3. A列为F左侧5列,所以A2转换为RC[-5] (同一行,起点左边5列(或者考虑第6列(F),从那里移动-5))
  4. 范围查找的原理相同。 您想要查看工作表LU中的A:E列。 因此,列F中的-5(记住起点是列F,即使它正在查看不同的工作表)-1

知道这一点,你可以转换其他公式,甚至是COUNTIF

此外,如果您再次陷入困境,请按照@ BruceWayne的build议,在Excel> Options> Formulas下转换R1C1参考样式,以查看手动input时的公式。