|
|
      Эта министатейка возникла потому, что иногда подобные мелочи вызывают совсем не маленькие сложности. Речь в ней идет о функции, дополняющей набор функций работы с датами VB. В частности, функции, которые возвращают номер составляющей даты (год, месяц, число, день недели) по дате. Например, функция Year(d As Date) возвращает номер года заданной как аргумент даты.
      Возможно вы обратили внимание, что в списке ничего не сказано о квартале. Между тем для экономистов квартал - это составляющая даты гораздо важнее, чем, например, день недели. Хотя задача кажется незначительной, модульный подход к программированию требует создания специальной функции. Вот она:
Public Function Quarter(ByVal dt As Date) As Integer
      Quarter = ((Month(dt) - 1) \ 3) + 1
End Function
      Ничего сложного - всего одна строчка. Функция возвращает номер квартала по заданной дате. Используем стандартный подход целочисленного деления. В каждом квартале 3 месяца, значит делить, очевидно придется на 3. Целочисленное деление номера месяца на 3 будет возвращать число от 0 до 4. Что-то не так, кварталов то 4. Для избежания этого, на 3 нужно делить номер месяца -1, т.е. от 0 до 11. Тогда деление будет давать результат от 0 до 3. Наконец, учтем, что кварталы нумеруются не с 0, а с единицы: прибавим 1.
      Изложенный подход одинаков для решения всех подобных задач. Формально эту задачу можно изложить так.
      Есть ряд X, который начинается со значения x1. Ряд разбит на интервалы размером а. Для определения номера n интервала, в который попадает значение x пользуются формулой:
n = |(x-x1)/a|+1
|
|