Vba excel

Особливості округлення чисел в VBA Excel. Використання оператора Round і вбудованої функції робочого аркуша - WorksheetFunction.Round.

оператор Round

А ви знаєте, що при використанні для округлення чисел в VBA Excel оператора Round, ви можете отримати зовсім інший результат, який очікували? І адже це дійсно так!

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

В результаті ви отримаєте це:

Vba excel

Дивно, чи не так? Як же так вийшло?
Справа в тому, що оператор Round здійснює «бухгалтерське» (або «банківське») округлення, яке покликане при великій кількості таких операцій звести погрішність до мінімуму. Це досягається за рахунок того, що оператор Round використовує при округленні правило, відмінне від того, яке ми знаємо ще зі школи, коли округляти число збільшується на одиницю, якщо відкидають число дорівнює п'яти. Суть округлення за допомогою оператора Round полягає в тому, що якщо перед відкидаємо п'ятіркою варто непарна цифра, то вона збільшується на одиницю (округлення вгору), а якщо перед нею стоїть парна цифра, то вона не збільшується (округлення вниз).

Ще можна сформулювати «бухгалтерське» округлення так: при відкиданні п'ятірки число округляється до найближчого парним. Зверніть увагу, що в результатах нашого прикладу всі отримані числа - парні.
Перевіримо похибка:

  1. Сума вихідних чисел: 1.5 + 2.5 + 3.5 +4.5 = 12
  2. Сума округлених чисел: 2 + 2 + 4 + 4 = 12

Результат вийшов просто ідеальний для наведеного прикладу, так як суми вихідних і округлених чисел рівні.

оператор WorksheetFunction.Round

Якщо вам необхідно загальноприйняте округлення, використовуйте вбудовану функцію робочого листа - WorksheetFunction.Round.

Скопіюйте в модуль VBA процедуру з використанням WorksheetFunction.Round і запустіть її виконання:

Результат буде наступний:

Vba excel

Вийшло те, що ми і очікували.

  1. Сума вихідних чисел: 1.5 + 2.5 + 3.5 +4.5 = 12
  2. Сума округлених чисел: 2 + 3 + 4 + 5 = 14

Результат очевидний - в даному випадку сума округлених чисел на 2 одиниці більше суми вихідних.

Виходячи з цього результату, можна зробити висновок, що «банківська» округлення за допомогою оператора Round дає точніші результати при масових операціях з округленими числами. Але в повсякденному житті частіше зустрічається звичайне округлення.

Вибирайте округлення, яке вам більше підходить для розв'язуваної задачі!

Навігація по публікаціям

Схожі статті