VBA选择某些列并应用公式

Posted

技术标签:

【中文标题】VBA选择某些列并应用公式【英文标题】:VBA select certain columns and apply a formula 【发布时间】:2014-06-10 01:42:09 【问题描述】:

所以我需要选择从第 11 列开始一直到 1000 的某些列。我需要沿每个选定的列应用一个公式。我需要选择的列分为 4 个步骤。我使用的代码是

For colNum = 11 To 1000 Step 4
            Range(Cells(2, colNum), Cells(225, colNum)).FormulaR1C1 = "=(D2)(G2)*RC[-2]"
Next colNum

代码为 RC[-2] 设置了正确的值,但是当它转到下一行时,公式中的单元格 D2 和 G2 不会更改为 D3 和 G3 / 到下一行中的相应单元格。有什么想法吗?

提前致谢!

【问题讨论】:

【参考方案1】:

试试这个:

For colNum = 11 To 1000 Step 4
    Range(Cells(2, colNum), Cells(225, colNum)).FormulaR1C1 = "=RC4*RC7*RC[-2]"
Next colNum

如果 D 和 G 是固定的,并且只有最后一个单元格在移动。 我不确定你想用(D2)(G2)完成什么,它会抛出#REF!错误。 另外,不要混淆。如果要使用R1C1,那就保持一致。 下面是上面的非R1C1公式。

Edit1:基于评论

Dim i As Long: i = 1000
For colnum = 11 To 100 Step 4
    Range(Cells(2, colnum), Cells(225, colnum)).Formula = "=$D2*$G2*" & _
        Cells(2, colnum - i).Address(False, False)
    i = i - 1
Next colnum

【讨论】:

这绝对有效!很快,假设我们不知道我们有多少列,在第一行代码中我会用什么替换 100 或 1000? 这很简单。 You can try this. 太棒了!最后,如果我希望将代码 Cells(2, colNum - 2) 的部分更改为 Cells(2, colNum - 1000) 但如果代码从一列开始,数字 1000 将以 1 的增量减少到下一个?像这样.. Cells(2, colNum - 999) 然后 Cells(2, colNum - 998) @user3720702 只需添加另一个变量计数器,该计数器将递减 1。查看我的编辑 成功了!!代码的那部分:Cells(2, colNum -i).Address(False, False) 是否可以平方并在诸如 SQRT 之类的参数内?例如 .... .Formula = "=SQRT(D2^2+G2^2+ (Cells(2, colNum -i))^2 )?这是我最后关心的问题,是另一组列。再次感谢感谢您的帮助!

以上是关于VBA选择某些列并应用公式的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL VBA 函数Msgbox应用

VBA选择工作表中的所有列并自动调整Excel 2010中的所有列宽度

使用动态单元格引用通过 VBA 应用公式。

应用公式,然后自动填充数据,直到列中的最后一个可见单元格:VBA

Excel VBA:编辑新行的现有条件格式规则

VBA过滤后选择可见单元格