#excel #vba #vba6
#excel #vba #vba6
Вопрос:
Я новичок в VBA — пытаюсь выполнить простое вычисление с помощью VBA, но не могу заставить его работать должным образом. Любая помощь будет высоко оценена. В принципе, у меня есть строка, результат должен быть равен предыдущему результату текущей соответствующей ячейке
Это то, что я имею в виду
A | B | C | D | |
---|---|---|---|---|
(1) Строка 1 | 1 | 2 | 3 | 4 |
(2) Результат | 1 | (1 2) | (1 2) 3 | ((1 2) 3) 4 |
Я использовал for Next, но не смог сгенерировать результат, который я хочу видеть, первый вывод правильный, но после первого вычисления все текущие вычисления неверны
Sub DeltaAllocationToCRSSum()
Range("A2").Value = 1 ' Set starting value for the first cell in the result roll
Dim Column1 As Integer
Dim Column2 As Integer
For Column1 = 1 to 4
For Column2 = 2 To 5
Cells(2,Column2) = Cells(2,Column1) Cells(1,Column2) 'meaning B2 = A2 B1 for the first calculation
Next Column2
Next Column1
Итак, этот код всегда давал мне правильный результат для первого вычисления, но последовательный результат всегда неверен. Кто-нибудь знает, в чем проблема? Извините, этот вопрос может быть очень базовым, но я сам не могу в этом разобраться…. Спасибо за помощь
Комментарии:
1. Кажется, вам не нужны два цикла for. заменить
column2
наcolumn1 1
Ответ №1:
Вам нужен только один цикл for, попробуйте это
Sub DeltaAllocationToCRSSum()
Range("A2").Value = 1 ' Set starting value for the first cell in the result roll
Dim Column1 As Integer
For Column1 = 1 To 4
Cells(2, Column1 1) = Cells(2, Column1) Cells(1, Column1 1) 'meaning B2 = A2 B1 for the first calculation
Next Column1
End Sub
Ответ №2:
попробуйте это
for i = 2 to usedrange.columns.count
if i =2 then
cells(2,i) = cells(2,i).offset(-1,0) ' column a
else
cells(2,i)= cells(2,1).offset(0,-1) cells(1,i)
end if
next i