Консультация онлайн # 202375

Раздел: Пакет MSOffice
Автор вопроса: DanilaKotov3619 (Посетитель)
Дата: 20.03.2022, 17:46 Консультация неактивна
Поступило ответов: 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Задача 1
Задание: Разработать приложение VBA, которое позволит:
  1. На Листе1 (Числа) в ячейки А1–А20 занести случайным образом значения из интервала (–50; 50).
  2. На Лист1 (Числа) в ячейку С1 записать “Количество +”, а в ячейку D1 поместить подсчитанное значение с количеством положительных чисел.
  3. На Лист1 (Числа) в ячейку С2 записать “Количество –”, а в ячейку D2 поместить подсчитанное значение с количеством отрицательных чисел.
  4. На Лист1 (Числа) в ячейку С3 записать “Количество 0”, а в ячейку D3 поместить подсчитанное значение с количеством чисел, равных нулю.
  5. На Лист2 (Положительные) в ячейку В1 записать “Положительные” и, начиная с ячейки B2, в столбик поместить все положительные числа.
  6. На Лист3 (Отрицательные) в ячейку С1 записать “Отрицательные” и, начиная с ячейки D1, в строку поместить все отрицательные числа.
  7. Создать кнопку “Количество” на листе “Числа”.
  8. Создать кнопку “Перенос” на листе “Числа”.

Задача 2. Нахождение суммы в диапазоне ячеек
Напишите программу вычисления суммы чисел, находящихся в диапазоне ячеек А1:А10, и выведите результаты вычисления с поясняющими надписями в ячейки С2:D2.
Решим эту задачу двумя способами: используя объект Sheets и объект Application (Application.Sum(…))
4.2 Напишите программу вычисления максимума, минимума, среднего значения и произведения чисел, находящихся в диапазоне ячеек А1:А10 на листе “Numbers”. Выведите результаты вычисления с поясняющими надписями в ячейки С2:D5.  Решите эти задачи двумя способами.
Для того чтобы узнать правильное написание функции рабочего листа и ее применение, обратимся к окну Object Browser.
  • Войдем в окно просмотра объектов.
  • Выберем в раскрывающемся списке Проект | Библиотека в верхнем левом углу экрана библиотеку объектов Excel.
  • В окне Классы выберем Application.
  • В окне списка Компоненты выберем Worksheet Function. В нижней части окна появится Property Worksheet Function As Worksheet Function (ссылка).
  • Нажмем на ссылку, и в окне Компоненты появится список всех функций. Используя этот список функций, напишем программу.

4.4  Напишите программу, которая из пары чисел А2 и В2, А3 и В3 и т.д. будет выбирать большее и помещать в столбец D, начиная с ячейки D2. Создайте кнопку для стирания результатов из столбцов А, В и D.
Помогите плиз с 4 лабой до 23.03.22, у меня просто ноут на ремонте у знакомого и хотел бы уже по скорее от неё избавиться, если что, то ниже я прикрепил pdf файл с самой лабй, заранее огромное спасибо ;)
Последнее редактирование 25.03.2022, 13:01 Коцюрбенко Алексей Владимирович (Старший модератор)

-----
Прикрепленные файлы:


лабораторная работа 4.pdf
скачать (440.1 кб)

Ответ # 1, Megaloman (Мастер-Эксперт)

У Вас прекрасная методичка. Я тупо работал по ней, хотя с некоторыми вещами я бы поступил аккуратнее.
Всю лабораторку я сделал в одной книге на разных листах, прилагаю.
Для иллюстрации коды и скриншот одной задачи (4.3):

Код
Public Sub Числа_4_3()
    Dim I As Integer
    
    Call Очистка_Numbers        'Очистка чисел, результатов подсчетов, перенесенных чисел
    Randomize Timer
    For I = 1 To 10
        Sheets("Numbers").Cells(I, 1) = Int(Rnd * 100) - 50
    Next I

End Sub

Public Sub Очистка_Numbers()
    With Sheets("Numbers")
        .Range("A1:A10").ClearContents
        .Range("C2:D5").ClearContents
    End With
End Sub

Public Sub Вычисления_4_3_V1()
                            ' Объявление переменных
    Dim ValMax As Integer       '— переменная для вычисления максимума чисел
    Dim ValMin As Integer       '— переменная для вычисления минимума  чисел
    Dim ValAve As Double        '— переменная для вычисления среднего  чисел
    Dim ValPro As Double        '— переменная для вычисления произведения чисел
    Dim Summa As Integer        '— переменная для вычисления суммы чисел
    
    Dim I As Integer            '— переменная цикла
    Dim R As Integer            '— переменная для текущего значения ячейки

    With Sheets("Numbers")
        ValMax = .Range("A1")   ' начальное значение максимума
        ValMin = .Range("A1")   ' начальное значение минимума
        Summa = 0               ' начальное значение суммы
        ValPro = 1              ' начальное значение произведения
        
        For I = 1 To 10                 ' Суммируем числа в цикле
            R = .Cells(I, 1)
            Summa = Summa + R
            If ValMax < R Then ValMax = R
            If ValMin > R Then ValMin = R
            ValPro = ValPro * R
        Next I
        ValAve = Summa / 10
        
        .Range("C2") = "Максимум чисел (V1)="   'Вывод на лист "Numbers" результаты вычисления с поясняющими надписями
        .Range("D2") = ValMax
        .Range("C3") = "Минимум чисел  (V1)="
        .Range("D3") = ValMin
        .Range("C4") = "Среднее чисел  (V1)="
        .Range("D4") = ValAve
        .Range("C5") = "Произведение чисел  (V1)="
        .Range("D5") = ValPro

    End With
End Sub

Public Sub Вычисления_4_3_V2()
    With Sheets("Numbers")
        .Range("C2") = "Максимум чисел (V2)="   'Вывод на лист "Numbers" результаты вычисления с поясняющими надписями
        .Range("D2") = Application.WorksheetFunction.Max(Sheets("Numbers").Range("A1:A10"))
        .Range("C3") = "Минимум чисел  (V2)="
        .Range("D3") = Application.WorksheetFunction.Min(Sheets("Numbers").Range("A1:A10"))
        .Range("C4") = "Среднее чисел  (V2)="
        .Range("D4") = Application.WorksheetFunction.Average(Sheets("Numbers").Range("A1:A10"))
        .Range("C5") = "Произведение чисел  (V2)="
        .Range("D5") = Application.WorksheetFunction.Product(Sheets("Numbers").Range("A1:A10"))
    End With
End Sub

Последнее редактирование 21.03.2022, 08:50 Megaloman (Мастер-Эксперт)

-----
Прикрепленные файлы:


Megaloman

Мастер-Эксперт
21.03.2022, 08:48
5

Мини-форум консультации # 202375

DanilaKotov3619

Посетитель

ID: 405402

325017

= общий =    20.03.2022, 17:49
Здравствуйте! Извините за беспокойство, немогли бы пожалуйста помочь с 4 лабой до среды? И ещё, если не затруднит, как можно больше комментариев к ней, где это возможно ))
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

325018

= общий =    20.03.2022, 17:50
В прошлый раз вы меня очень спасли с этими комментариями smile
=====
Kotov3619
Megaloman

Мастер-Эксперт

ID: 137394

325105

= общий =    22.03.2022, 21:26
Вот варианты, делал для собственного удовольствия. Не совсем по методичке. Данные задач вынесены в глобальные константы. Немного по другому организованы циклы.

-----
Прикрепленные файлы:

=====
Нет времени на медленные танцы
DanilaKotov3619

Посетитель

ID: 405402

325114

= общий =    23.03.2022, 09:34
Доброе утро! Спасибо за дополнительные варианты данной лабы ) я вот сейчас готовлюсь к защите и смотрю по первому файлу, который вы кидали 21.03 и насовсем понимаю, зачем нужен calculation v2? Просто смотрю он делает тоже самое, что и v1 и без понятия зачем v2, хехе)
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

325115

= общий =    23.03.2022, 09:35
Тот же sum ver 2 в чем его прикол?)
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

325116

= общий =    23.03.2022, 10:02
Смотрю тут ток меняет v1 на v2 в скобках, но зачем вторая v2?)
=====
Kotov3619
Megaloman

Мастер-Эксперт

ID: 137394

325117

= общий =    23.03.2022, 10:13

он делает тоже самое, что и v1 и без понятия зачем v2, хехе)

Я то тут при чем, спрашивайте у методички. Там работают две разные процедурочки, поэтому написал V1 и V2, чтобы отличать, какая процедура отработала. Они, естественно, дают одинаковый результат.

Кстати, в коде в паре процедур допустил неаккуратность, которая никак не сказывается на работе, но выглядит некрасиво:
Код
Public Sub Вычисления_4_3_V2()
    With Sheets("Numbers")
        .Range("C2") = "Максимум чисел (V2)="   'Вывод на лист "Numbers" результаты вычисления с поясняющими надписями
        .Range("D2") = Application.WorksheetFunction.Max(Sheets("Numbers").Range("A1:A10"))
        .Range("C3") = "Минимум чисел  (V2)="
        .Range("D3") = Application.WorksheetFunction.Min(Sheets("Numbers").Range("A1:A10"))
        .Range("C4") = "Среднее чисел  (V2)="
        .Range("D4") = Application.WorksheetFunction.Average(Sheets("Numbers").Range("A1:A10"))
        .Range("C5") = "Произведение чисел  (V2)="
        .Range("D5") = Application.WorksheetFunction.Product(Sheets("Numbers").Range("A1:A10"))
    End With
End Sub
Там и так Sheets("Numbers") уже под With, он здесь избыточен. Где-то еще в коде было такое же. Имейте ввиду.
=====
Нет времени на медленные танцы
DanilaKotov3619

Посетитель

ID: 405402

325118

= общий =    23.03.2022, 10:20

Там и так Sheets("Numbers") уже под With, он здесь избыточен. Где-то еще в коде было такое же. Имейте ввиду

понял, принял, спасибо, вроде готов к защите ;)
=====
Kotov3619
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.