КАТЕГОРИИ: Архитектура-(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 'передаємо масив діапазону робочого листа, можемо переглянути зміст 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; Просмотров: 973; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |