Нужна помощь с Vba Excel.
Нужно написать макрос
Дано количество комнат в квартирах 20-квартирного дома. Найти количество однокомнатных квартир в этом доме.
Дан список блюд с указанием их калорийности. Найти блюда, у которых калорийности отличается блюда c минимальной калорийностью на 20.
Буду очень благодарна за помощь
Ответы
Для решения первой задачи можно использовать цикл для итерации по списку размеров квартир и подсчета количества однокомнатных квартир. Вот пример того, как это можно сделать:
----
Sub countOneRoomApartments()
'Объявление переменных
Dim apartmentSizes() As Integer 'Массив для хранения размеров квартир
Dim numOneRoomApartments As Integer 'Переменная для хранения количества однокомнатных квартир
Dim i As Integer 'Счетчик циклов
'Инициализируйте массив с размерами квартир
apartmentSizes = Array(2, 3, 1, 2, 3, 1, 1, 2, 3, 2, 3, 1, 1, 2, 3, 2, 3, 1, 1, 2)
'Инициализировать количество однокомнатных квартир в 0
numOneRoomApartments = 0
'Итерация по массиву размеров квартир
For i = 0 To 19
'Если текущая квартира является однокомнатной, увеличьте счетчик
If apartmentSizes(i) = 1 Then
numOneRoomApartments = numOneRoomApartments + 1
End If
Next i
'Вывести результат
MsgBox "There are " & numOneRoomApartments & " one-room apartments in the house."
End Sub
-----
Для решения второй задачи вы можете использовать цикл для итерационного просмотра списка блюд и их калорийности, а также использовать оператор If для проверки, отличается ли калорийность блюда от минимальной калорийности на 20. Вот пример того, как это можно сделать:
---
Sub findDishesWithDifferentCaloricValue()
'Объявление переменных
Dim dishes() As String 'Массив для хранения названий блюд
Dim caloricValues() As Integer 'Массив для хранения калорийности блюд
Dim minCaloricValue As Integer 'Переменная для хранения минимального значения калорийности
Dim i As Integer 'Счетчик циклов
'Инициализируйте массивы с названиями и калорийностью блюд
dishes = Array("Pizza", "Hamburger", "Salad", "Sushi", "Nachos")
caloricValues = Array(300, 500, 200, 250, 400)
'Найдите минимальную калорийность
minCaloricValue = caloricValues(0)
For i = 1 To 4
If caloricValues(i) < minCaloricValue Then
minCaloricValue = caloricValues(i)
End If
Next i
'Итерация по массивам блюд и калорийностей
For i = 0 To 4
'Если калорийность текущего блюда отличается от минимальной калорийности на 20, выведите название блюда
If Abs(caloricValues(i) - minCaloricValue) = 20 Then
MsgBox dishes(i)
End If
Next i
End Sub
---
Обрати внимание, что в обоих примерах я использовал функцию Abs для получения абсолютного значения разницы между калорийностью блюда и минимальной калорийностью. Это сделано для того, чтобы учесть возможность того, что минимальная калорийность может быть выше, чем калорийность блюда, и в этом случае разница будет отрицательной. Функция Abs возвращает абсолютное значение числа, которое всегда положительно.