使用relative / abs引用使用VBA插入函数

时间:2017-07-20 21:19:58

标签: excel vba excel-vba

我有一些公式,我试图通过使用VBA插入到我的工作表中。行是动态的。无论我是否尝试使用标准公式或R1C1插入公式,公式的一部分都会更改我需要的相对参考,而不是另一个。

 select * 
   from ( select * 
               , lag(Rate, 1) over(partition by product order by beginDate) as prevRate 
               , lag(Product, 1) over(partition by product order by beginDate) as prevProduct
            from #Products 
        ) lag   
  where ( rate <> prevRate or prevRate is null ) and product = isnull(prevProduct, product)
  order by Product, BeginDate 

这导致istext部分仅评估E21,它应该是B25中的E21,B26中的F21,B27中的G21等。我觉得奇怪的是插入的公式实际上会根据需要更改$ A25。它将A25置于B25,A26置于B26,A27置于B26等。

根据我的阅读,VBA不允许R1C1函数更改引用,所以最终我的问题是标准插入公式是否可以在我更改引用的同时将公式粘贴到我需要它们的公式,因为公式填充了行和如果是这样,怎么去呢?谢谢!

1 个答案:

答案 0 :(得分:0)

FWIW,这是一个循环,可以在每个单元格中单独设置公式:

Dim r As Long
For r = 25 To lastRow
    Cells(r, "B").Formula = "=IFERROR(IF(ISTEXT(" & Cells(21, r - 20).Address & _
                            "),AVERAGEIF(BottomLeftTable[Billing Name],$A" & r & _
                            ",BottomLeftTable[Margin]),""""),"""")"
Next r