Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/219: Рейтинг темы: голосов - 219, средняя оценка - 4.91
 Аватар для Slimmi
2 / 2 / 0
Регистрация: 28.03.2008
Сообщений: 64

Найти количество четных чисел, содержащихся в диапазоне

19.02.2011, 01:20. Показов 42054. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Hello, world!
Вот такую задачу перед нами, студентами, поставил товарищ преподаватель, НО попросил внести небольшие дизайнерские и соответственно головоломающие коррективы.
Вот непосредственно первоначальное условие задачи:

Напишите функцию, которая бы для диапазона, передаваемого ей в качестве параметра, и признака типа результата, находила бы количество четных чисел, содержащихся в диапазоне, если значение типа результата = 1, нечетных чисел, если значение типа результата = 2.

Вроде задача не сложная, даже если учитывать полное незнание VBA. Но нужно следующее: допустим у нас есть выделеная область ячеек, пусть будет 20*20. Ее мы должны рандомно заполнить числами и выделить мышкой область допустим 5*4 и решить главный вопрос задачи. Так вот, помогите пожалуйста, покажите как работать так с ячейками Экселя. Заранее благодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2011, 01:20
Ответы с готовыми решениями:

Найти количество четных чисел в диапазоне от a до b
найти количество четных чисел в диапазоне от a до b; поменять местами значение переменных a и b

Найти сумму четных чисел и их количество в диапазоне от 1 до 99
Найти сумму четных чисел и их количество в диапазоне от 1 до 99 Используя только циклы

Найти сумму четных чисел и их количество в диапазоне от 1 до 99
Найти сумму четных чисел и их количество в диапазоне от 1 до 99

6
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.02.2011, 10:47
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

С помощью процедуры заполняем выделенный диапазон ячеек случайными числами от -100 до +100:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub m_1()
'С помощью инструмента Dim создаём на пластинке оперативной памяти
'поименованную область (переменную) oCell.
'Range означает, что в переменной будет находиться одна
'или несколько ячеек Excel.
Dim oCell As Range
'For Each ... In ... Next - называется циклом и используется для обработки
'всех элементов одной коллекции. Под коллекцией в VBA понимается
'набор одинаковых объектов. В нашем случае элементом коллекции
'является одна ячейка, а коллекция - это все выделенные ячейки.
For Each oCell In Selection.Cells
    'Rnd - инструмент VBA для генерации случайных чисел.
    'Для генерирования случайных чисел нужно использовать следующую формулу:
    '(max - min + 1) * Rnd + min.
    'Int используется, чтобы рандомные числа были целые, а не дробные.
    oCell.Value = Int((100 - (-100) + 1) * Rnd + (-100))
Next oCell
End Sub
Далее указан код для функции. Запускать эту функцию нужно как обычную функцию Excel; она находятся в группе Определённые пользователем.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'Диапазон - это переменная, содержащая выделенные ячейки.
'ТипРезультата - это переменная, в которую будет помещаться число 1 или 2.
'Integer означает, что в переменной могут быть только целые числа (есть ещё дробные).
Function ЧётныеНечётные(Диапазон As Range, ТипРезультата As Integer)
Dim oCell As Range
Dim Количество As Integer
'If ... Then ... ElseIf ... End If - используется для выбора действия.
'Если в переменную ТипРезультата поместят число 1, то
'функция будет определять количество чётных чисел.
If ТипРезультата = 1 Then
    For Each oCell In Диапазон
        'Далее для определения чётности и нечётности будет использован
        'инструмент VBA - Mod. Mod используется для определения остатка от деления.
        'Можно мысленно заменить в коде Mod на знак деления "/", только результатом 
        'будет остаток от деления. Делить будем на 2; если число делится на 2 
        'без остатка, то оно чётное, если с остатком - то нечётное.
        If oCell.Value Mod 2 = 0 Then
            'Если число делитя на 2 без остатка, то сделаем запись 
             'в переменной Количество.
            Количество = Количество + 1
        End If
    Next oCell
    'ЧётныеНечётные - это название функции, то есть в функцию помещаем значение
    'из переменной Количество.
    ЧётныеНечётные = Количество
'Если в переменную ТипРезультата поместят число 2, то
'функция будет определять количество нечётных чисел.
ElseIf ТипРезультата = 2 Then
    For Each oCell In Диапазон
        If oCell.Value Mod 2 <> 0 Then
            'Если число делится на 2 с остатком, то сделаем запись 
            'в переменной Количество.
            Количество = Количество + 1
        End If
    Next oCell
    ЧётныеНечётные = Количество
End If
End Function
1
731 / 407 / 95
Регистрация: 19.12.2010
Сообщений: 756
19.02.2011, 11:07
как вариант практической реализации.
Вложения
Тип файла: xls Выделенный массив.xls (38.0 Кб, 815 просмотров)
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
19.02.2011, 15:55
С помощью инструмента Dim создаём на пластинке оперативной памяти

Не по теме:

Вот это мне нравится больше всего: Дом, который построил Джек.
Только немного уточнить надо:

С помощью инструмента Dim создаём в ОЗУ(RAM), которая реализована пластинкой, которая вставляется в специальный слот, который находится на материнке, которая закреплена в системном блоке, который стоит на столе, который находится в комнате на втором этаже в доме, который построил Джек. Так будет намного понятней и доступней!!

1
 Аватар для Slimmi
2 / 2 / 0
Регистрация: 28.03.2008
Сообщений: 64
20.02.2011, 01:25  [ТС]
Огромнейшее спасибо, очень оперативно и главное очень помогло. Как раз то, что нужно. Еще раз Спасибо!

Добавлено через 4 часа 24 минуты
Busine2009, а можно ли загнать функцию как-нибудь в кнопку. Так-то все замечательно, уже вроде разобрался с этим всем
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
20.02.2011, 08:50
Цитата Сообщение от Slimmi Посмотреть сообщение
а можно ли загнать функцию как-нибудь в кнопку.
нет, нельзя. Существует всего 2 способа вызова функции:
  1. из процедуры:
    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Sub m_1()
    Dim x As Integer
    x = 2
    'Вызов функции m_2
    MsgBox m_2(x)
    End Sub
    Function m_2(x As Integer)
    m_2 = x * 2
    End Function
  2. как обычную функцию Excel. Наша функция будет находиться в разделе Определённые пользователем.
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
20.02.2011, 13:57
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

из процедуры:
А что мешает процедуре назначить кнопку?

Добавлено через 2 часа 20 минут
Например так:
Visual Basic
1
2
3
4
5
6
7
Sub Кнопка1_Щелкнуть()
Dim R As Range
Dim ПРИЗНАК As Integer
Set R = Selection
ПРИЗНАК = InputBox("Введите признак результата", "Запрос признака", 1)
MsgBox ЧётныеНечётные(R, ПРИЗНАК)
End Sub
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2011, 13:57
Помогаю со студенческими работами здесь

Найти все пары дружественных чисел, содержащихся в диапазоне от 200 до 300
Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Найти все...

Найти количество четных цифр, содержащихся в записи числа
Через операторы Mod, Div, Repeat С экрана вводится натуральное число . Найти количество четных цифр,содержащихся в его записи....

Найти количество положительных элементов содержащихся в четных строках матрицы
Найти количество положительных элементов содержащихся в четных строках матрицы. Подскажите, пожалуйста.

Вычислить количество четных и нечетных чисел в диапазоне.
Программа запрашивает ввод с клавиатуры начального и конечного значений диапазона целых чисел. Вычислить количество четных и нечетных...

Подсчитать количество чётных цифр в определённом диапазоне чисел
Света написала в тетради все натуральные числа от A до B. Сколько написала Света четных цифр? Вроде простенькая задача но перебором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru