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

Раздел: Пакет MSOffice
Автор вопроса: DanilaKotov3619 (Посетитель)
Дата: 14.03.2022, 15:10 Консультация неактивна
Поступило ответов: 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Необходимо разработать приложение на VBA, которое позволит :
1. На Листе1 (Числа) в ячейки А1–А20 занести случайным образом значения из интервала (–50; 50).
2. На Лист1 (Числа) в ячейку С1 записать “Количество +”, а в ячейку D1 поместить подсчитанное значение с количеством положительных чисел.
3. На Лист1 (Числа) в ячейку С2 записать “Количество –”, а в ячейку D2 поместить подсчитанное значение с количеством отрицательных чисел.
4. На Лист1 (Числа) в ячейку С3 записать “Количество 0”, а в ячейку D3 поместить подсчитанное значение с количеством чисел, равных нулю.
P.S прилагаю документы этой работы, там есть готовый пример, но я все равно не разбираюсь пока что в этом вба smile и так дофига всего, а мне еще курсач писать
если что нужно до 16.03, желательно до завтра 20-22 по мск, был бы ооочень благодарен и признателен за помощь smile

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


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

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


Код
Sub Laborator3()
    Dim MyShe, Sdiap As String
    Dim iR As Range
    Dim RndLow, RndUpp, NVal, i As Integer
    
    MyShe = "Лист1 (Числа)"     ' Имя рабочего листа
    Sdiap = "A1:A20"            ' Диапазон обрабатываемых ячеек
    RndLow = -50                ' Нижняя граница случайных чисел
    RndUpp = 50                 ' Верхняя граница случайных чисел
    
    Txt = Array("Количество +", "Количество -", "Количество 0") 'Текстовки
    RTxt = Array("C1", "C2", "C3")                      'В какой ячейке
    RVal = Array("D1", "D2", "D3")                      'В какой ячейке значение
    
    Call My_Sheet(MyShe)        ' Создание или активация рабочего листа
    
    Randomize
    For Each iR In Range(Sdiap) ' Заполнение указанного диапазона ячеек случайными числами
        iR = Int((RndUpp - RndLow + 1) * Rnd + RndLow)
    Next
    
    NVal = UBound(RVal)
    ReDim MyVal(NVal) As Integer    ' В этом массиве будем подсчитывать кол-во значений по условию
    For Each iR In Range(Sdiap)     ' Анализ значений и подсчет их по заданным условиям
        If iR.Value > 0 Then
            MyVal(0) = MyVal(0) + 1
        Else
            If iR.Value < 0 Then
                MyVal(1) = MyVal(1) + 1
            Else
                MyVal(2) = MyVal(2) + 1
            End If
        End If
    Next
        
    For i = 0 To NVal       ' Заносим текстовки и результаты подсчетов в заданные ячейки
        Range(RTxt(i)) = Txt(i)
        Range(RVal(i)) = MyVal(i)
        Columns(Range(RTxt(i)).Column).AutoFit
    Next
End Sub

Sub My_Sheet(My)                ' Создание или активация рабочего листа
    Dim Sh As Worksheet
    
    On Error Resume Next
    Set Sh = Sheets(My)
    If Err.Number <> 0 Then     ' Листа нет, создаём
        If Sh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = My
    Else
        Sh.Activate             ' Лист имеется, активируем.
    End If
    On Error GoTo 0
End Sub

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


Megaloman

Мастер-Эксперт
14.03.2022, 20:36
5

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

DanilaKotov3619

Посетитель

ID: 405402

324808

= общий =    14.03.2022, 15:12
и снова прошу вас о помощи, если не затруднит до завтрашнего вечера сделать ее smile
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

324809

= общий =    14.03.2022, 15:14
и еще, простите за такой вопрос не по теме, но вы случайно в дискретной математике (универ 1 курс) не разбираетесь? мне бы сегодня часам к 18:00 по мск не помешала бы помощь по ней, хехе :(
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

324810

= общий =    14.03.2022, 15:16

и снова прошу вас о помощи, если не затруднит до завтрашнего вечера сделать ее

и если можно, то как можно больше комментариев к ней, где это возможно ;)
=====
Kotov3619
Megaloman

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

ID: 137394

324811

= общий =    14.03.2022, 15:35
Не разбираюсь. Попробуйте задать вопрос в форуме.
=====
Нет времени на медленные танцы
DanilaKotov3619

Посетитель

ID: 405402

324813

= общий =    14.03.2022, 15:48

Не разбираюсь. Попробуйте задать вопрос в форуме.

а по поводу задани по вба, сможете помочь?
=====
Kotov3619
Megaloman

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

ID: 137394

324814

= общий =    14.03.2022, 16:29
Делаю
=====
Нет времени на медленные танцы
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.