Возник такой вопрос: можно ли используя 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
Если я правильно понимаю, то в окончательном документе будет много листов. В том случае, если проверяемые данные находятся в пятой строке каждого листа и не содержат пустых значений можно попробовать так: [vba]
Код
Private Sub 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) To UBound(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 > 1 Then If MsgBox("Разница на листе " & sh.Name & " больше единицы. Минимальное значение - " & min & ", максимальное - " & max & _ ". Продолжить проверку для останых листов?", vbYesNo + vbQuestion + vbDefaultButton2, "Подтверждение") = vbNo Then sh.Activate Exit Sub End If End If Next End Sub
[/vba]
Если я правильно понимаю, то в окончательном документе будет много листов. В том случае, если проверяемые данные находятся в пятой строке каждого листа и не содержат пустых значений можно попробовать так: [vba]
Код
Private Sub 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) To UBound(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 > 1 Then If MsgBox("Разница на листе " & sh.Name & " больше единицы. Минимальное значение - " & min & ", максимальное - " & max & _ ". Продолжить проверку для останых листов?", vbYesNo + vbQuestion + vbDefaultButton2, "Подтверждение") = vbNo Then sh.Activate Exit Sub End If End If Next End Sub