基于动态范围扩展en Excel Forumula单元格

时间:2016-07-26 12:30:23

标签: excel excel-vba vba

我试图找到一种方法来做到这一点。在这一刻。我将多个数据集导入电子表格。我有两个彼此垂直设置的枢轴表。顶部水平是所有测试名称,垂直是日期列表。

日期根据从查询中提取的数据点数量而变化,因此范围会不断变化。

使用以下代码将数据分类到这两个中。

=IF(SUMPRODUCT((Sheet3!$B$4:$B$174=E$3)*(Sheet3!$C$4:$C$174=$B10)*(Sheet3!$E$4:$E$174))>0,SUMPRODUCT((Sheet3!$B$4:$B$174=E$3)*(Sheet3!$C$4:$C$174=$B10)*(Sheet3!$E$4:$E$174)),"")

最终结果是数据按照这种格式分类到适当的数据/测试对中。

我遇到了一个问题,因为我需要能够扩展数据排序公式的受影响区域,而不是无限期地向下延伸。

我试图使用这个VBA宏,但目的不是拉下EXACT公式,而是扩展公式,因为Excel会扩展它,更改允许更改的项目,如行和用于更改数据排序条件的列。

Sub aTest()
With Sheets("Sheet2")
    .Range("c4:c" & .Cells(.Rows.Count, "B").End(xlUp).Row).Formula = "=Len(B4)"
End With
End Sub

这不起作用,因为它完全复制了公式。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

使用.FormulaR1C1方法,我认为应该这样做,它应该考虑抵消单元格引用。

Sub aTest()
   With Sheets("Sheet2")
      .Range("c4:c" & .Cells(.Rows.Count, "B").End(xlUp).Row).FormulaR1C1 = "=Len(R[0]C[-1])"
   End With
End Sub

方括号使引用相对,因此"=Len(R[0]C[-1])"表示前一列,下面为零行