Почему VBA для вычисления следующего цикла неверно?{VBA}

#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