Обработка диапазона ячеек. Вложенные циклы FOR

Страницы работы

Содержание работы

Обработка диапазона ячеек. Вложенные циклы FOR.

Задача. Заполнить диапазон ячеек случайными числами и в полученном диапазоне подсчитать количество отрицательных элементов.

Как обрабатывать одномерный диапазон ячеек (строку или столбец) вы уже знаете. Делается это с помощью цикла FOR и объекта Cells(i,j), которые помогают последовательно обработать все ячейки строки или столбца.

При решении задач на двумерный диапазон ячеек, необходимо понять, что двумерный диапазон ячеек есть одномерный диапазон одномерных диапазонов ячеек, т.е. одномерный диапазон строк или одномерный диапазон столбцов. Следовательно, необходимо два цикла FOR. Один будет работать с одномерным диапазоном (строкой или столбцом), другой повторять все эти действия для всех строк или столбцов.

Алгоритм решения:

1.  Запросим размерности диапазона, который необходимо заполнить случайными числами N – количество строк в диапазоне, M –количество столбцов в диапазоне;

2.  Организуем два цикла FOR: внутренний цикл будет обрабатывать строку диапазона (присваивать каждой ячейке случайное значение и подсчитывать количество K отрицательных элементов), внешний – перебирать строки.

Блок-схема:


Программа:

Подпись: Sub Количество_отрицательных()
Dim N As Byte, M As Byte 'количество строк и столбцов в диапазоне
Dim I As Byte, J As Byte 'счетчики строк и столбцов
Dim K As Integer 'количество отрицательных элементов
N = InputBox("Введите количество строк", "Ввод N", 5)
M = InputBox("Введите количество столбцов", "Ввод M", 5)
K = 0
'Организуем перебор строк диапазона
For I = 1 To N Step 1
'организуем перебор ячеек в строке
   For J = 1 To M Step 1
     Cells(I, J).Value = Int(Rnd() * 10) - 5
     If Cells(I, J).Value < 0 Then K = K + 1
   Next J
Next I
MsgBox "количество отрицательных чисел " & Chr(13) & _
" в заполненном диапазоне= " & K
End Sub
Задача. Начиная с активной ячейки, заполнить двумерный диапазон ячеек случайными числами из промежутка (-15;20). Вывести суммы тех столбцов диапазона, которые меньше первого элемента столбца.

Алгоритм решения:

1.  Запросить с клавиатуры размерности диапазона;

2.  Для заполнения диапазона случайными числами из промежутка (-15;20) воспользуемся формулой Int((верхняя граница – нижняя граница + 1) * Rnd() + нижняя граница)

3.  Организуем два цикла FOR. Внутренний цикл будет обрабатывать столбец, и подсчитывать  S сумму элементов столбца. После того как сумма Sбудет подсчитана, необходимо ее сравнить с первым элементом этого же столбца. Если S< первого элемента, то вывести S в тот же столбец, на две строки ниже.

Внешний цикл будет повторять все вышеописанные действия для каждого столбца.

Блок-схема:


Программа:

Подпись: Sub Сумма_по_Столбцу()
Dim N As Byte, M As Byte 'количество строк и столбцов в диапазоне
Dim I As Byte, J As Byte 'счетчики строк и столбцов
Dim S As Integer 'сумма элементов столбца
'запрашиваем размерность диапазона
N = InputBox("N=", "Ввод количества строк", 5)
M = InputBox("M=", "Ввод количества столбцов", 5)
'инициализируем генератор случайных чисел
 'в зависимости от показаний системных часов
 Randomize
 'Организуем перебор столбцов диапазона
For J = 1 To M Step 1
 S = 0
'организуем перебор ячеек в столбце
   For I = 1 To N Step 1
   'Заполняем ячейки сл. числами из диапазона (-15;20)
   'начиная с активной ячейки
     ActiveCell.Cells(I, J).Value = Int((20 - (-15) + 1) * Rnd() + (-15))
     S = S + ActiveCell.Cells(I, J).Value
   Next I
   If S < ActiveCell.Cells(1, J).Value Then
     'выводим сумму на две строки ниже границы диапазона
     ActiveCell.Cells(N + 2, J).Value = S
   End If
Next J
'задержка на рабочем листе
MsgBox ""
End Sub
! Распространенные ошибки. В данной задаче переменная S должна обнуляться перед входом в каждый столбец, т.е. перед внутренним циклом FOR, иначе сумма будет накапливаться постоянно, и будет подсчитана сумма всех элементов матрицы.

Похожие материалы

Информация о работе