2016-12-12 2 views
0

У меня есть расчет, где я сравниваю ячейку на листе перед листом в той же ячейке на листе после листа. если раньше меньше, чем после, я вычитаю один из другого и сохраняю эти результаты на сводной странице. Мне нужно сделать это для каждого столбца рабочего листа, хотя и я с трудом выясняю, как получить расчет, выполненный в последующих столбцах. для столбцов Y через BM существует другая категория. вот мой код до сих пор, который отлично работает для столбца y и сохраняет текущее итоговое значение в столбце a сводного листа. Может ли кто-нибудь помочь мне установить диапазон столбцов и переместить его вперед? Благодарю васперейти к следующей колонке

Sub TryAgain3() 
'evaluates differences in column y (appraisal) in before to column y in after. if before is less than after (we underdisclosed) then it calculates the difference and sticks it in summary 
Dim A() As Integer '~ I will put the result in this column, A 
Dim i As Integer 
Dim j As Integer 
Dim lastrow As Integer 
lastrow = Range("y3").End(xlDown).Row 
ReDim A(lastrow) 
For i = 1 To lastrow 
    If ThisWorkbook.Sheets("Before").Cells(i + 1, 25).Value < ThisWorkbook.Sheets("After").Cells(i + 1, 25) Then 
    ThisWorkbook.Sheets("summary").Cells(i + 1, 1).Value = ThisWorkbook.Sheets("Before").Cells(i + 1, 25).Value - ThisWorkbook.Sheets("After").Cells(i + 1, 25).Value 
    End If 

Next I 

Next 
End Sub 
+0

Поместите еще один цикл за пределы тока, чтобы закодировать номера столбцов, а затем замените '25', которые ссылаются на столбец' Y', с переменной из цикла. –

ответ

0

Как сказал Скотт Кранер в комментарии, просто добавьте еще один цикл за пределами текущего, который проходит через столбцы.

Sub TryAgain3() 
    'evaluates differences in column y (appraisal) in before to column y in after. if before is less than after (we underdisclosed) then it calculates the difference and sticks it in summary 
    Dim i As Integer 
    Dim j As Integer 
    Dim lastrow As Integer 
    lastrow = Range("y3").End(xlDown).Row 
    For j = 25 To 65 ' columns Y to BM 
     For i = 1 To lastrow 
      If ThisWorkbook.Sheets("Before").Cells(i + 1, j).Value < ThisWorkbook.Sheets("After").Cells(i + 1, j) Then 
       ThisWorkbook.Sheets("summary").Cells(i + 1, j - 24).Value = ThisWorkbook.Sheets("Before").Cells(i + 1, j).Value - ThisWorkbook.Sheets("After").Cells(i + 1, j).Value 
      End If 
     Next I 
    Next 
End Sub 
+0

вот и все! Благодарю вас обоих, я не мог заставить его работать правильно и продолжал получать ошибки. Спасибо вам большое за вашу помощь! – Pauliec

+0

@Pauliec - Я заметил, что у вашего исходного кода был дополнительный 'Next', чем он должен был быть, поэтому я предположил, что вы, должно быть, пытались ** что-то **, как то, что мы предложили. – YowE3K

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