Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проверка ряда чисел на разницу между ними - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка ряда чисел на разницу между ними (Макросы/Sub)
Проверка ряда чисел на разницу между ними
walkinghome Дата: Вторник, 19.01.2021, 21:29 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Доброго времени суток!

Возник такой вопрос: можно ли используя 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.

Буду благодарен любым ответам.

Автор - walkinghome
Дата добавления - 19.01.2021 в 21:29
Pelena Дата: Вторник, 19.01.2021, 22:30 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Файл с примером помог бы в понимании проблемы.
имеется следующий ряд

где он имеется? В строке, в столбце, в массиве?..


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеФайл с примером помог бы в понимании проблемы.
имеется следующий ряд

где он имеется? В строке, в столбце, в массиве?..

Автор - Pelena
Дата добавления - 19.01.2021 в 22:30
walkinghome Дата: Среда, 20.01.2021, 15:41 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, извиняюсь. Пример приложил. Строка со значениями находится в строке "Высота".
К сообщению приложен файл: 6826335.xlsx (9.9 Kb)


Выражение - вооружение
 
Ответить
СообщениеPelena, извиняюсь. Пример приложил. Строка со значениями находится в строке "Высота".

Автор - walkinghome
Дата добавления - 20.01.2021 в 15:41
китин Дата: Среда, 20.01.2021, 16:26 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
обязательноVBA? а условным форматированием не устроит?
К сообщению приложен файл: 0247699.xlsx (10.2 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеобязательноVBA? а условным форматированием не устроит?

Автор - китин
Дата добавления - 20.01.2021 в 16:26
walkinghome Дата: Среда, 20.01.2021, 17:14 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
китин, на самом деле не так уж это и критично, лишь бы была возможность появления UserForm'a, позволяющая либо остаться на данном листе либо "пойти" дальше.


Выражение - вооружение
 
Ответить
Сообщениекитин, на самом деле не так уж это и критично, лишь бы была возможность появления UserForm'a, позволяющая либо остаться на данном листе либо "пойти" дальше.

Автор - walkinghome
Дата добавления - 20.01.2021 в 17:14
mgt Дата: Пятница, 22.01.2021, 12:07 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 98
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010
Если я правильно понимаю, то в окончательном документе будет много листов. В том случае, если проверяемые данные находятся в пятой строке каждого листа и не содержат пустых значений можно попробовать так:
[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
[/vba]

Автор - mgt
Дата добавления - 22.01.2021 в 12:07
walkinghome Дата: Суббота, 23.01.2021, 21:56 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
mgt, спасибо, выглядит идеально.

Местами возникает ошибка (13, Type Mismatch) в следующей строке кода:

[vba]
Код
min = r(1, 1)
[/vba]

Что может быть причиной этого?


Выражение - вооружение
 
Ответить
Сообщениеmgt, спасибо, выглядит идеально.

Местами возникает ошибка (13, Type Mismatch) в следующей строке кода:

[vba]
Код
min = r(1, 1)
[/vba]

Что может быть причиной этого?

Автор - walkinghome
Дата добавления - 23.01.2021 в 21:56
Pelena Дата: Суббота, 23.01.2021, 23:14 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Что может быть причиной этого?
возможно в таблице не только целые числа


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Что может быть причиной этого?
возможно в таблице не только целые числа

Автор - Pelena
Дата добавления - 23.01.2021 в 23:14
walkinghome Дата: Воскресенье, 24.01.2021, 11:07 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
mgt, Pelena, не подскажете какую(-ие) из строчек необходимо отредактировать, дабы сделать ссылку на определенный лист? Скажем на "Лист2"?

С данным моментом вожусь уже долго т.к. в VBA далеко не мастак :(


Выражение - вооружение
 
Ответить
Сообщениеmgt, Pelena, не подскажете какую(-ие) из строчек необходимо отредактировать, дабы сделать ссылку на определенный лист? Скажем на "Лист2"?

С данным моментом вожусь уже долго т.к. в VBA далеко не мастак :(

Автор - walkinghome
Дата добавления - 24.01.2021 в 11:07
Pelena Дата: Воскресенье, 24.01.2021, 11:37 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
ссылку на определенный лист

то есть не надо перебирать все листы, как в макросе от mgt?
Числа могут быть дробными?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
ссылку на определенный лист

то есть не надо перебирать все листы, как в макросе от mgt?
Числа могут быть дробными?

Автор - Pelena
Дата добавления - 24.01.2021 в 11:37
walkinghome Дата: Воскресенье, 24.01.2021, 11:41 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, именно! Прошу прощения, не обратил заранее внимание на то, что все листы одной книги всё же имеют разные значения


Выражение - вооружение
 
Ответить
СообщениеPelena, именно! Прошу прощения, не обратил заранее внимание на то, что все листы одной книги всё же имеют разные значения

Автор - walkinghome
Дата добавления - 24.01.2021 в 11:41
Pelena Дата: Воскресенье, 24.01.2021, 11:57 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Как-то так
К сообщению приложен файл: 6826335.xlsm (19.3 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеКак-то так

Автор - Pelena
Дата добавления - 24.01.2021 в 11:57
RAN Дата: Воскресенье, 24.01.2021, 12:17 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вопрос проверки решается в одну строку
[vba]
Код
MsgBox (Application.Max(Rows(5)) - Application.Min(Rows(5))) <= 1
[/vba]
А гадать, какого нужно еще, дело не благодарное.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВопрос проверки решается в одну строку
[vba]
Код
MsgBox (Application.Max(Rows(5)) - Application.Min(Rows(5))) <= 1
[/vba]
А гадать, какого нужно еще, дело не благодарное.

Автор - RAN
Дата добавления - 24.01.2021 в 12:17
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка ряда чисел на разницу между ними (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!