Дана матрица размером mxn. Определить количество "особых" элементов. Элемент считать "особым", если он больше суммы своего столбца. Реализовать в отдельной подпрограмме заливку строк диапазона содержащих "особый" элемент.
Помогите мне, пожалуйста. Какой код должен быть у кнопки "Решение"? Сколько должно быть матриц? Хватит ли одной?
P.S.: Я новичок в VBA.
[вложение удалено администратором]
[вложение удалено администратором]
Откуда вы взяли этот лист? Сами сделали или это вам выдали в учебном заведении?
Сама сделала.
Мне кажется, что результат правильно сделать так (смотрите файл).
Кол-во будет вставлено под матрицей в H14, а строки будут закрашены в самой матрице.
[вложение удалено администратором]
да, подходит такой вариант
Здесь две подпрограммы, запускайте подпрограмму "макрос".
макрос
Sub макрос()
' Создание в оперативной памяти компьютера поименованных областей - переменных.
' Переменную можно сравнить с обычным файлом, но переменная находится
' в оперативной памяти компьютера.
' Long означает, что в переменной могут быть только целые числа.
Dim i As Long, j As Long
' Double означает, что в переменной могут быть целые и дробные числа.
Dim sum As Double, counter As Long
' Удаление заливки в матрице, которая находится на эксель-листе.
Range("D6:M12").Interior.ColorIndex = xlColorIndexNone
' For ... To ... Step - это цикл. Цикл используется, чтобы
' запускать одну и ту же команду несколько раз.
' Цикл по столбцам эксель-листа (со столбца D по M).
For j = 4 To 13 Step 1
' Сброс переменной от предыдущего использования.
sum = 0
' Цикл по строкам текущего столбца (строки с 6 по 12).
' Подсчёт суммы в текущем столбце.
For i = 6 To 12 Step 1
sum = sum + Cells(i, j).value
Next i
' Поиск особого элемента согласно заданию.
' Закраска строки с особым элементом.
For i = 6 To 12 Step 1
' If ... Then ... End If - используется, чтобы выбирать, какое действие сделать.
' Если элемент больше числа, которое находится в переменной "sum".
If Cells(i, j).value > sum Then
' Закраска строки в отдельной подпрограмме.
' В эту подпрограмму передаём строку, которую надо закрасить.
Color Range(Cells(i, 6), Cells(i, 12))
' Подсчёт особых элементов.
counter = counter + 1
End If
Next i
Next j
' Запись кол-ва особых элементов в эксель.
Range("H14").value = counter
End Sub
Private Sub Color(row As Range)
' Private означает, что подпрограмма будет видна только в том модуле, где
' находится подпрограмма "макрос".
' Закраска строки.
row.Interior.Color = 5296274
End Sub
Спасибо большое за помощь.