Формула в VBA на основе корректирующих ячеек - PullRequest
0 голосов
/ 23 мая 2018

У меня есть некоторые трудности в написании правильного кода.Как вы можете видеть на первом рисунке, у меня есть 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 голосов
/ 23 мая 2018

На мой взгляд, у вас есть две альтернативы:

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") и чтобы все ваши ценовые ряды были рядом друг с другом и чтобы ваше первоначальное автозаполнение работало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...