2016-02-11 2 views
0

Я пытаюсь выполнить автозаполнение формулы в диапазоне с помощью vba. Что я пытаюсь сделать, так это рассчитать процентный вклад для каждого элемента. Скажем у меня есть 2 записейФормула VBA Autofill с фиксированной ссылкой на ячейку

A1 = 4

A2 = 6

A3 = сумма A1 и A2 = 10

Что я хочу

B1 = A1/$ A $ 3 = 40%

B2 = A2/$ A $ 3 = 60%

, но я не совсем уверен, как я мог бы найти последнюю строку A и код его в

Range ("B1") .Formula = "= A1/?????"

любые идеи помогут! Благодаря

+0

Вы не можете поместить форму la в A1, который ссылается на A1. Это называется круговой ссылкой. – Jeeped

+0

Извините, что это была опечатка, должна быть B1 – David

+0

Вы пытаетесь сказать, что хотите формулу, которая делит текущую ячейку, какими бы ни была последняя заполненная ячейка в столбце A? Итак, если у вас есть данные в A1: A4, а сумма в A5, вы хотите = A1/$ A $ 5? – jkpieterse

ответ

2

Пожалуйста, попробуйте это ..

Range("B1").FormulaR1C1 = "=RC[-1]/INDEX(C[-1],MATCH(1E+99,C[-1]))" 

Вы должны упомянуть ряд с циклическими ссылками, указав строку и столбец, не из активной ячейки соответственно как RC[-1]/R3C1

+0

Чтобы * 'найти последнюю строку A' *, возможно, '= A1/INDEX (A: A, MATCH (1E + 99, A: A))'. – Jeeped

+0

Спасибо за ответ! Поэтому, когда я работаю с VBA, ссылочный стиль очень важен правильно? – David

+0

Также я хотел бы знать, что, как сделать динамику, нужно добавить одно: Col A динамичен в том смысле, что он может быть обновлен с 3 или более строками, скажем, сгенерированный сводной таблицей. поэтому я думаю, что «= RC [-1]/R3C1» трюк будет работать здесь ... – David

0

Найти последнюю ячейку сначала, затем суммируйте его и добавьте формулу в колонку B

Sub Button1_Click() 
     Dim LstRw As Long, rng As Range, Sm As Range 

     LstRw = Cells(Rows.Count, "A").End(xlUp).Row 
     Set rng = Range("A1:A" & LstRw) 
     Set Sm = Cells(LstRw + 1, 1) 

     Sm = Application.Sum(rng) 
     rng.Offset(, 1) = "=a1/" & Sm.Address 

    End Sub 
+0

Спасибо! Это сработало! – David

Смежные вопросы