Кнопка вычитания столбца - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть фрагмент кода, который использует оператор выбора для SQL для генерации данных на основе определенного диапазона дат. Он отлично работает и делает то, что я хочу. Мой вопрос касается двух колонок: F и H. F - сумма платежа, а H - баланс. Предполагается, что G в этом случае будет потраченной суммой (которая является разницей между суммой платежа и балансом). То, что я пытаюсь сделать, это после того, как запрос выполняется, и мне дают х количество записей, что, если я нажимаю кнопку F, в каждой строке вычитается соответствующая H та же самая строка, и результат переходит в столбец G * 1001. *

Sub Button1_Click()
Range("G11").End(xlDown).Formula = Range("F11").End(xlDown).Value - Range("H11").End(xlDown).Value
End Sub

SQL начинает вставлять данные в 12-ю строку, поэтому у меня есть G11.End (xlDown).

В основном, я надеюсь, что это что-то вроде, если данные находятся в 12-й строке в F / H и равны 8,3, а в 20-й строке как 13,5, чем G в 12-й и 20-й строке будет 5 и 9

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете вставить одну формулу в диапазон при условии, что вы напишете ее с динамической нефиксированной ($) нотацией, чтобы она везде использовала эквивалентную строку / столбец так, чтобы:

dim lr as long
lr = cells(rows.count,"F").end(xlup).row 'finds the last row in column F
range(cells(12,"G"),cells(lr,"G")).formula = "=F12-H12" 'note that the formula destination and the source data start on 12

Если вы предвидите изменение строки 11 или просто хотите упростить исправление позже, вы можете сделать что-то вроде:

dim lr as long, r as long
r = 12 'can change this, or make in inputbox... 
lr = cells(rows.count,"F").end(xlup).row 'finds the last row in column F
range(cells(r,"G"),cells(lr,"G")).formula = "=F" & r & "-H" & r

Edit1: изменил всеОт 11 до 12 с


Edit2: Будет иметь дело с проблемой листов (с использованием только второго кода, поскольку в будущем будет легче изменить):

With Sheets("Report")
    dim lr as long, r as long
    r = 12 'can change this, or make in inputbox... 
    lr = .cells(.rows.count,"F").end(xlup).row 'finds the last row in column F
    .range(.cells(r,"G"),.cells(lr,"G")).formula = "=F" & r & "-H" & r
End With

Я скопировал / вставил каждый из предоставленных мною кодов и убедился, что они работают, когда связаны с модулем.

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