Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

VBA. Пишемо макрос для Excel

Сьогодні ми будемо вивчати написання макросів для Microsoft Excel і спробуємо застосувати їх на конкретному прикладі.

Почнемо з матчастини. Нам знадобиться: Microsoft Excel, одна голова і пара рук. Ексель "з коробки" володіє вбудованим компілятором VBA, тому встановлювати його додатково не потрібно.

Отже, почнемо з простого: створимо першу призначену для користувача функцію. Щоб увійти в редактор коду, натисніть Alt + F11. Ви побачите середу розробки Visual Basic, а зліва - менеджер проектів. У ньому натисніть на корені дерева правою кнопкою натисніть Insert -> Module. Тепер ми бачимо вікно для редагування коду. Створимо в ньому функцію, яка повертає універсальну газову постійну:

Function RUG () As Double RUG = 8.314472 End Function

Тепер ми можемо вставити цю функцію в будь-яке місце книги.

Тепер спробуємо створити функцію з параметрами.

Function sum (a, b) As Double sum = a + b End Function

Як бачите, використання функцій в VBA схоже на використання функцій в інших мовах. А тепер закінчимо наш Hello World і перейдемо до розгляду реального прикладу. Як приклад вирішимо диференціальне рівняння методом Рунге-Кутта 4 порядку.

Вихідні дані:
Вихідні дані:

Для вирішення нам необхідно оголосити 5 функцій.

Перша функція буде безпосередньо обчислювати значення похідної за формулою, яка дана за умовою задачі. Функція виглядає так:

Function func (a As Double, f_k As Double, x As Double, t As Double) As Double func = 1 + a * x * Sin (t) - f_k * x * x End Function

Тут а і f_k - параметри рівняння, x - координата, t - крок за часом.

Метод Рунге-Кутта передбачає розрахунок чотирьох коефіцієнтів: k1, k2, k3, k4. Зверніть увагу: ми не можемо оголошувати функцію k1 безпосередньо - виникне конфлікт з номером комірки таблиці. Тому скористаємося префіксом.

Function f_k1 (h As Double, a As Double, f_k As Double, x As Double, t As Double) As Double f_k1 = h * func (a, f_k, x, t) End Function Function f_k2 (h As Double, a As Double, f_k As Double, x As Double, t As Double) As Double f_k2 = h * func (a, f_k, x + 0.5 * h, y + 0.5 * f_k1 (h, a, f_k, x, t)) End Function Function f_k3 (h As Double, a As Double, f_k As Double, x As Double, t As Double) As Double f_k3 = h * func (a, f_k, x + 0.5 * h, t + 0.5 * f_k2 (h, a, f_k, x, t)) End Function Function f_k4 (h As Double, a As Double, f_k As Double, x As Double, t As Double) As Double f_k4 = h * func (a, f_k, x + h, f_k3 (h, a, f_k, x, t)) End Function

Тут h - крок сітки. Інші параметри мають те ж призначення, що і в першій функції. Обчислення проводяться чисто по схемі Рунге-Кутта.

Тепер нам залишилося лише застосувати наші функції і вирішити диференціальне рівняння. Для цього нам знадобиться початкова умова. Його ми можемо вибрати будь-який, в даному випадку x (0) = 0.

Його ми можемо вибрати будь-який, в даному випадку x (0) = 0

Кому лінь розбиратися, розшифровую формулу:

Кому лінь розбиратися, розшифровую формулу:

Тепер розтягуємо нашу формулу на весь інтервал і отримуємо чисельне рішення.

Тепер розтягуємо нашу формулу на весь інтервал і отримуємо чисельне рішення

Для наочності побудуємо графік:

Для наочності побудуємо графік:

Тут синьою лінією показаний графік знайденої функції, коричневої - її апроксимація методом найменших квадратів. Цей метод я описувати не буду, просто скажу, що в підсумку ми отримали рівняння x = -0.65t2 + 1.2664t-0.01992. Якщо вам цікава реалізація цього методу, можете подивитися його у вкладеному файлі.

Darth_Vaider ,

vr-online.ru

Новости

Как сделать красивую снежинку из бумаги
Красивые бумажные снежинки станут хорошим украшением дома на Новый год. Они создадут в квартире атмосферу белоснежной, зимней сказки. Да и просто занимаясь вырезанием из бумаги снежинок разнообразной

Пиротехника своими руками в домашних
Самые лучшие полезные самоделки рунета! Как сделать самому, мастер-классы, фото, чертежи, инструкции, книги, видео. Главная САМОДЕЛКИ Дизайнерские

Фольгированные шары с гелием
Для начала давайте разберемся и чего же выполнен фольгированный шар и почему он летает дольше?! Как вы помните, наши латексные шарики достаточно пористые, поэтому их приходится обрабатывать специальным

Все товары для праздника оптом купить
Как сделать правильный выбор в работе, бизнесе и жизни, о котором никогда не придется жалеть. Мы хотим рассказать вам об удивительной и очень простой технике 7 вопросов, которые позволят оценить ситуацию

2400 наименований пиротехники
В последние десятилетия наша страна может похвастаться появлением нескольких десятков отечественных производителей, специализирующихся на выпуске пиротехники. Если вы сомневаетесь, какой фейерверк заказать,

Как сделать из бумаги самолет
 1. Самолеты сделанный по первой и второй схеме являются самыми распространенными. Собирается такое оригами своими руками достаточно быстро, несмотря на это самолет летит достаточно далеко за счет свое

Надувные шарики с гелием с доставкой
На праздники часто бывают востребованы воздушные шарики, надутые гелием. Обычно, их покупают уже готовыми (надутыми) и привозят на праздник. Или, приглашают специалистов, которые приезжают и надувают

Аниматоры на детские праздники в Зеленограде
Уж сколько раз твердили миру…Что готовиться ко дню рождения нужно заранее, а не бегать в предпраздничный день угорелой кошкой. Нельзя впихнуть в 24 часа дела, рассчитанные на недели. К празднику нужно