基于调整单元的VBA公式

基于调整单元的VBA公式,vba,excel,excel-formula,Vba,Excel,Excel Formula,我在写正确的代码时遇到了一些困难。正如你在第一张图中看到的,我有3种不同的股票,它们的价格列在不同的栏中 现在我想计算这些不同股票的回报率,这是我用VBA做的。代码引用名为“输入”的工作表,但将值放在不同的工作表中。代码的最后一部分只是将计算拖到最后使用的列 Range("B4").FormulaR1C1 = "=Input!R[1]C[1]/Input!R5C[1]*100" lastcolumn = Cells(3, Columns.Count).End(xlToLeft).column

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

现在我想计算这些不同股票的回报率,这是我用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的回报,我是按F5/F$5*100计算的,而不是按D5/D$5*100计算的?我希望这个问题有意义


我认为您有两种选择:

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) 修改彭博公式以隐藏日期(=bdh(“AAPL UQ Equity”、“PX_LAST”、“dts=h”)这样,您的所有价格系列都彼此相邻,并且您的原始自动填充作品

包括内嵌图像,以帮助您更好地查看它们。现在应该可以看到它们了。感谢您提供有关隐藏彭博社日期的信息,我不知道这一点。我现在已经解决了问题。很高兴提供帮助!尝试使用彭博社sheet builder为bette服务r结果