基于调整细胞的VBA公式

时间:2018-05-23 14:04:33

标签: excel vba excel-vba excel-formula

我在撰写正确的代码时遇到了一些困难。正如你在第一张图片中看到的,我有3种不同的股票,它们的价格列在不同的列中。

1

我现在想要计算这些不同股票的回报,我正在通过使用VBA来做。代码引用名为"输入"的表格,但将值放在不同的表格中。代码的最后一部分只是将计算拖到最后使用的列中。

Range("B4").FormulaR1C1 = "=Input!R[1]C[1]/Input!R5C[1]*100"
lastcolumn = Cells(3, Columns.Count).End(xlToLeft).column
Range("B4").AutoFill Destination:=Range(Cells(4, 2), Cells(4, lastcolumn))

但是,拖动时出现问题。如下图所示,由于"输入"中的值之间的列数,我无法拖动代码。工作表,并且在另一个工作表中没有列。如何更改我的代码,以便VBA计算正确的方式,以便Microsoft i的返回按F5 / F $ 5 * 100而不是D5 / D $ 5 * 100计算?我希望这个问题有道理。

2

1 个答案:

答案 0 :(得分:0)

在我看来,你有两种选择:

1)调整自动填充方法:在循环中编写公式,使用偏移量然后填充下面的单元格

Dim rng As Range
Set rng = Range("k2:m2")
Dim i As Integer
Dim offset As Integer
i = 0
offset = 2
For Each cell In rng
    cell.FormulaR1C1 = "=Input!R[-1]C[-" & 10 - offset * i & "]/Input!R5C[-" & 10 - offset * i & "]*100"
    i = i + 1
Next cell

2)修改Bloomberg公式以隐藏日期(= bdh(" AAPL UQ Equity"," PX_LAST"," dts = h")和那种方式您的所有价格系列都是彼此相邻的,并且原始自动填充的工作原理