Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zadachiinformgotov.doc
Скачиваний:
24
Добавлен:
20.05.2015
Размер:
121.34 Кб
Скачать

Задача 25

Открыть книгу Excel "Торговый дом" на рабочем листе с именем "Подведение итогов". На рабочем листе с помощью программного кода процедуры ProdSales создать список, состоящий из трех полей: названия по­лей "Код продукта", "Количество продаж” и "Объем продаж" располо­жить в ячейках ЕЗ и F3 и G3 соответственно. Количество записей в этом списке будет определяться переменной NFound. Написать программный код процедуры формирования записей списка на рабочем листе элементами уже сформированных массивов ProdCodes(Nfound), Quantity(Nfound), Dollars (Nfound). Пояснения для составления процедуры:

- в начале программного кода выполнить описание переменной Nfound как целой, и массивов размера NFound как первых двух целых и третьего денежного;

- затем занести элементы массивов в столбцы с использованием цикла

For и управляющей структуры With - End With;

- выполнить сортировку списка по объему продаж в порядке убывания, в сортировке заголовки полей не участвуют;

- с помощью функции MsgBox вывести количество записей в списке.

Option Explicit

Option Base 1

Sub ProdSales()

Dim Nsales As Integer, ProdCodesData() As Integer, ProdCodesFound() As Integer, Quantity() As

Integer, DoIIarsData() As Single, DollarsTotal() As Single, i As Integer, j As Integer, NFound As

Integer, NewProduct As Boolean

With Active Workbook. Worksheets("Topговые операции").Range("E3")

Range(.Offset(1. 0), .Offset(0, 2).End(xIDown)).ClearContents

End With

With Active Workbook. Worksheets("Topговые операции ").Range("A3")

Nsales = Range(.Offset(1, 0), .End(xlDown)).Rows.Count

ReDim ProdCodesData(Nsales)

ReDim DollarsData(Nsales)

For i = 1 To Nsales

ProdCodesData(i) = .Offset(i, 0)

DollarsData(i) = .Offset(i, 2)

Next i

End With

NFound = 0

For i = 1 To Nsales

NewProduct = True

If NFound > 0 Then

For j = 1 To NFound

If ProdCodesData(i) = ProdCodesFound(j) Then

NewProduct = False

Quantity(j) = Quantity(j) + 1

DollarsTotal(j) = DollarsTotal(j) + DollarsData(j)

Exit For

End If

Nextj

End If

If NewProduct Then

NFound = NFound + 1

ReDim Preserve ProdCodesFound(NFound)

ReDim Preserve Quantity(NFound)

ReDim Preserve DollarsTotal(NFound)

ProdCodesFound(NF ound) = ProdCodesData(i)

Quantity(NFound) = 1

DollarsTotal(NFound) = DollarsData(i)

End If

Next i

Forj = 1 To NFound

With Range("E3")

.Offset(j, 0) = ProdCodesFound()

.Offset(j, 1) = Quantity(j)

.Offset(j, 2) = DollarsTotal()

End With

Nextj

Range("E4").Sort Key1 :=Range("G4"), Order1:=xlDescending, Header:=xlYes

MssBox "В базе данных проданных товаров найдено " & NFound & " наименований"

End Sub