Возник такой вопрос: можно ли используя VBA проводить проверку ряда чисел на разницу между самым большим и самым малым числом? При этом важно, что разница превышающая 1 недопустима.
Положим, что имеется следующий ряд:
15 15 15 15 14 14 14.
В данном случае проверка пройдена. Однако, если представить другой ряд, например:
15 15 15 15 14 13 13.
То в данном случае проверка не проходится, так как разница самого большого и самого малого числа составляет уже 2.
Буду благодарен любым ответам.
Доброго времени суток!
Возник такой вопрос: можно ли используя VBA проводить проверку ряда чисел на разницу между самым большим и самым малым числом? При этом важно, что разница превышающая 1 недопустима.
Положим, что имеется следующий ряд:
15 15 15 15 14 14 14.
В данном случае проверка пройдена. Однако, если представить другой ряд, например:
15 15 15 15 14 13 13.
То в данном случае проверка не проходится, так как разница самого большого и самого малого числа составляет уже 2.
китин, на самом деле не так уж это и критично, лишь бы была возможность появления UserForm'a, позволяющая либо остаться на данном листе либо "пойти" дальше.
китин, на самом деле не так уж это и критично, лишь бы была возможность появления UserForm'a, позволяющая либо остаться на данном листе либо "пойти" дальше.walkinghome
Если я правильно понимаю, то в окончательном документе будет много листов. В том случае, если проверяемые данные находятся в пятой строке каждого листа и не содержат пустых значений можно попробовать так:
PrivateSub Check_diff() Dim r Dim sh As Worksheet Dim i%, min%, max% For Each sh In ThisWorkbook.Worksheets
r = sh.Range(sh.Cells(5, 2), sh.Cells(5, sh.Range("a1").End(xlToRight).Column))
min = r(1, 1) For i = LBound(r, 2) ToUBound(r, 2) If r(1, i) > max Then max = r(1, i) If r(1, i) < min Then min = r(1, i) Next i If max - min > 1Then If MsgBox("Разница на листе " & sh.Name & " больше единицы. Минимальное значение - " & min & ", максимальное - " & max & _ ". Продолжить проверку для останых листов?", vbYesNo + vbQuestion + vbDefaultButton2, "Подтверждение") = vbNo Then
sh.Activate ExitSub EndIf EndIf Next EndSub
Если я правильно понимаю, то в окончательном документе будет много листов. В том случае, если проверяемые данные находятся в пятой строке каждого листа и не содержат пустых значений можно попробовать так:
PrivateSub Check_diff() Dim r Dim sh As Worksheet Dim i%, min%, max% For Each sh In ThisWorkbook.Worksheets
r = sh.Range(sh.Cells(5, 2), sh.Cells(5, sh.Range("a1").End(xlToRight).Column))
min = r(1, 1) For i = LBound(r, 2) ToUBound(r, 2) If r(1, i) > max Then max = r(1, i) If r(1, i) < min Then min = r(1, i) Next i If max - min > 1Then If MsgBox("Разница на листе " & sh.Name & " больше единицы. Минимальное значение - " & min & ", максимальное - " & max & _ ". Продолжить проверку для останых листов?", vbYesNo + vbQuestion + vbDefaultButton2, "Подтверждение") = vbNo Then
sh.Activate ExitSub EndIf EndIf Next EndSub