自动填充公式不是动态的

时间:2016-05-09 20:29:39

标签: excel vba excel-vba

我试图自动填充一些公式,但是在复制时不是更新单元格引用,而是保留相同的引用。这是为了复制VLookup和If(和)语句。代码的相关部分如下,有问题的部分在评论下面,现在让我们获取2014年数据及以下数据。

    Sub sidebyside()
'
' test Macro
'

'
Dim lastRow2014 As Long

ActiveSheet.Range("$A$10:$V$4388").AutoFilter Field:=11, Criteria1:="1"
    lastRow2014 = Range("A" & Rows.Count).End(xlUp).Row


  ' Get side-by-side data for comparison
  Range("E10").Value = "Full Name"
  Range("Y10").Value = "Full name"
  Range("Z10").Value = "2014 Data"
  Range("AA10").Value = "2016 Data"


    Range("Y11").Select
    Range("Y11").Formula = "=E11"

  'Copy this down to the lastrow of the lefthand side (lastRow2014)
    Range("Y11").AutoFill Destination:=Range("Y11", "Y" & lastRow2014)

    'Now let's get the 2014 data
    'Range("I11: I" & lastRow2014).Copy Destination:=Range("Z11")
    Range("Z11").FormulaR1C1 = "=VLOOKUP(Y11,E: I, 5, FALSE)"
    Range("Z11").AutoFill Destination:=Range("Z11", "Z" & lastRow2014)


    'Let's get the corresponding 2016 data.
        'VLOOKUP!
    Range("AA11").FormulaR1C1 = "=VLOOKUP(Y11,P:T,5,FALSE)"
    Range("AA11").Select
    'Selection.AutoFill Destination:=Range("AA3:AA" & Range(
   Selection.AutoFill Destination:=Range("AA11:AA" & Range("T" & Rows.Count).End(xlUp).Row)


    'Now, let's calculate the percentage.  The trick will be the reference.
    Range("AA4").FormulaR1C1 = "='Summary 2'!M3" 'This is the index from the summary tab
Range("AA10").Value = "Within?"
Range("AA11").Formula = "=IF(AND(Y11 <=(Z11 + ($AA$4 * Z11)), Y11 >= (Z11 - (Z11 * $AA$4))), ""WITHIN"", ""NOT"")"
Range("AA11").Select
Selection.FillDown

1 个答案:

答案 0 :(得分:1)

不是填充第一个公式并填充它,而是一次填充所有公式:

例如:

Range("Y11:Y" & lastRow2014).Formula = "=E11"

而不是:

Range("Y11").Select
Range("Y11").Formula = "=E11"

'Copy this down to the lastrow of the lefthand side (lastRow2014)
Range("Y11").AutoFill Destination:=Range("Y11", "Y" & lastRow2014)

坚持这一点,您可以使用以下方法修改Z等式:

Range("Z11:Z" & lastRow2014).Formula = "=VLOOKUP(Y11,E:I, 5, FALSE)"

您遇到的问题是VLOOKUP中的额外空间。 &#34; E:我&#34;应该是&#34; E:我&#34;。