Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функції для роботи з масивами




Масив і діапазон робочого листа.

Лабораторна робота 7

Завдання до лабораторної роботи 6

Масиви. Опис і створення масивів. Динамічні масиви

Лабораторна робота 6

Завдання до лабораторної роботи 5

Розв’яжіть приклади 1-4.

Змініть ім'я кожної зі створених 10 робочих книг.

Поверніть колишні імена робочим аркушам активної книги.

Змініть форматування в діапазоні А1:К20.

 

Масив – це індексована група значень, узагалі говорячи, того самого типу.
Синтаксис опису масиву:

dim <ім'я масиву> [(розмірність)] [as <тип елементів>]

Якщо тип елементів масиву не зазначений, то за замовчуванням вони мають тип Variant.

<розмірність> допускає до 60 елементів і має синтаксис:

[min1 to] max1, [min2 to] max2, …

Якщо min явно не зазначений, то індексація починається з 0.

 

 

Приклад:

dim a(5) as double ‘ масив 6 елементів.

dim b(2,3) as string ‘масив 3-x рядків і 4-х стовпців.

Якщо необхідна індексація з 1, то на початку програми використовується опція Option Base 1 або використовується другий спосіб опису масивів, наприклад:

dim a (1 to 5) as double

dim b (1 to 2, 1 to 3) as string

 

Приклад 1

option base 1

sub proc1()

dim a(3) as integer

a(1) =10

a(2) =20

a(3) =30

msgbox “a(1)=”&a(1)

end sub

Значення змінної можна подивитися не тільки за допомогою функції Msgbox, але й через вікно налагодження Immediate. Для цього перед end sub у програму додамо команду debug.print <список змінних>, наприклад:

debug.print “a(2)=”,a(2), “a(3)=”,a(3)

У VBA існує унікальна можливість обійти визначення масиву як набору однотипних елементів. Для цього потрібно визначити масив як Variant.

 

Приклад 2

Створимо масив елементів різних типів.

Option Base 1

Sub pr2()

dim b(4,3) as variant

b(1,1) = “VBA”

b(1,2) = “C++”

b(1,3) = “Математичні моделі”

b(2,1) = 4

b(2,2) = 5

b(2,3) = 6.5

b(3,1) = #01/01/82#

b(3,2) = #05/07/93#

b(3,3) = #01/01/99#

b(4,1) = FALSE

b(4,2) = TRUE

b(4,3) = FALSE

debug.print “b(4,2)=”,b(4,2)

msgbox “b(1,3)=” & b(1,3)

end sub

Динамічні масиви використовуються, якщо в процесі роботи програми потрібно змінити розмірність масиву.

Синтаксис:

dim <ім'я масиву> () as <тип елементів>

При цьому в програмі обов'язково повинна бути інструкція, що визначає розміри масиву, до його першого використання.

redim <ім'я масиву> (<розмірність>) as <тип>

При цьому перевизначати можна тільки розмірність, але не тип масиву.

Приклад 3

dim c() as variant

redim c(2)

c(1)=5: c(2)=6

debug.print c(1), c(2)

redim c(3,2)

c(1,1) = “краще”

c(1,2) = “менше”

c(2,1) = “,”

c(2,2) = “так”

c(3,1) = “краще”

c(3,2) = “.”

debug.print c(1,1), c(1,2), c(2,1)

debug.print c(2,2), c(3,1), c(3,2)

Передати значення елементів одного масиву іншому масиву можна тільки поелементно.

Створити 2 масиви:

1) елементів типу, визначеного користувачем;

2) елементів різних типів.

Ініціювати елементи масиву й вивести їх значення на екран двома способами (використовуючи msgbox і вікно налагодження).

 

 

1. Масив можна вивести в діапазон робочого листа без циклу по всіх елементах масиву, привласнивши властивості Value діапазону ім'я масиву:

Range (<діапазон>). Value =<ім'я масиву>

2. Дані з діапазону легко перенести в масив VBA, привласнивши масиву значення властивості Value зазначеного діапазону:

<ім'я масиву> = Range (<діапазон>). Value.

При цьому масив повинен бути описаний як змінна типу Variant.

3. Функції VBA для роботи з масивами

Lbound (<ім'я масиву>[,<розмірність>])

Ubound (<ім'я масиву>[,<розмірність>])

Ці функції повертають відповідно мінімальне й максимальне припустимі значення зазначеної розмірності масиву, наприклад:

Dim A(1 to 100, 0 to 3, -3 to 4)

x=Lbound(A, 1) ``x=1

y=Ubound(A, 2) ``y=3

z =Lbound(A, 3) ``z=-3

Erase <ім'я масиву>[, <ім'я масиву>, …]

- для статичних масивів очищає всі елементи масиву: для чисел – заносить нулі, для рядків – порожній рядок, для variant – значення empty

- для динамічних масивів цілком видаляє масив і його зміст з оперативної пам'яті. Перед наступним звертанням програми до динамічного масиву необхідно використовувати Redim.

Array (<список аргументів>)

Створює масив типу Variant, привласнюючи список аргументів елементам масиву, наприклад:

Dim b as Variant

B= Array(10, 20, 30) 'b(0)=10, b(1)=20, b(2)=30.

На робочий лист масив array завжди виводиться в рядок і якщо треба вивести його в стовпець, його потрібно транспонувати, наприклад:

Range (“C10:C12”). Value =Application.Transpose (b)

Якщо масив array передати в діапазон робочого листа, а потім повернути його в інший масив, тобто привласнити змінній Variant, то звертатися до елементів нового масиву потрібно, як до двовимірного масиву, у якого один рядок і кілька стовпців, наприклад:

Dim b as Variant

Nums =array (10, 11, 12, 13, 14)

Debug.print nums(4)

Range (“a1:e1”). Value =nums

B =Range(a1:e1”). Value

Debug.print b (1, 4) `елементи nums(4) і b(1, 4) однакові.

Array можна використовувати й для заповнення багатомірних масивів.

IsArray (<ім'я змінної>)

Повертає True, якщо ім'я змінної містить масив, False – у противному випадку.

Функції робочого листа Excel для роботи з масивами.

Count (<ім'я масиву>) – повертає кількість чисел у масиві

Count A (< ім'я масиву >) – повертає кількість елементів масиву

Sum (<ім'я масиву>) - суму елементів масиву

SumProduct (< ім'я масиву1>, <ім'я масиву2>, …) – суму добутків елементів масивів

SumSq (<ім'я масиву>) – повертає суму квадратів елементів масиву

SumXm2 (<ім'я масиву1>, <ім'я масиву2>) – повертає суму квадратів різниць елементів двох масивів

Sum2Y2(< ім'я масиву1>, <ім'я масиву2>) – повертає суму різниць квадратів елементів двох масивов

Mmult (<ім'я масиву1>, <ім'я масиву2>) – повертає добуток двох матриць

Minverse (<ім'я масиву>) – повертає зворотну матрицю

Transpose (<ім'я масиву>) – повертає транспоновану матрицю

Mdeterm (<ім'я масиву>) – повертає визначник матриці

При цьому до всіх убудованих функцій робочого листа Excel звертатися необхідно, указуючи сам host-додаток, наприклад:

A =Application. Minverse (B).

Приклад 1

Option Base 1

Sub pr1()

Dim a(5,5) as Integer, x as Integer, y as Integer, b as Variant

For x=1 to 5

For y=1 to 5

A (x, y)=x*y

Next y

Next x 'створення масиву

Worksheets (1). Activate

With Range (“A1:E5”). Value =a

Msgbox “масив уведений у діапазон” &.Address

End With

'передаємо масив діапазону робочого листа, можемо переглянути зміст
'робочого листа й одержати повідомлення про те, що масив уведений у діапазон з 'абсолютними координатами $A$1:$E$5.

B= Range (“A1:E5”).Value

MSgbox b (3,4)

Msgbox “діапазон уведений у масив” & Ubound (b, 1) & _

“на” & Ubound(b, 2).

'діапазон уведений у масив 3x4

With Range (“F3:H7”) Value =a

Msgbox “частина масиву а, уведена в діапазон” &.Address

End With

'у діапазон робочого листа можна ввести

`частину масиву, створений діапазон 3x5

End Sub.

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 937; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.029 сек.