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

  • (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 вопросов, которые позволят оценить ситуацию

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

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

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

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

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

Суши доставка меню
В последние годы японская кухня стала очень популярной в нашей стране. И найти современного человека, который бы никогда не пробовал суши и роллы очень сложно. Но как правильно кушать суши палочками

Обеденные группы для маленькой кухни
Любой дом начинается с кухонной комнаты, а хороший дом - с уютной кухни. Уютной назвать кухню можно, если все в ней гармонично подобрано в соответствии с вашими вкусами и в едином стиле. Многие люди