上旬・中旬・下旬を求める関数

先日 Excel について、相談を受けました。
ある管理表において、表内の日付を「上旬・中旬・下旬」で分類し、記載行数を変えて
それを表現したいというのです。

f:id:Infoment:20180803065141p:plain

詳細データとして、別に具体的な入庫日と入庫品目名 および 数量一覧があるのですが、その入庫日から、当月の「〇旬」を判別して集計する必要があります。
そこで、引数:日付に対し、戻り値:上中下旬となるユーザー定義関数を作成することにしました。

Public Function GetSeasonNumber(target_date As Date) As Long
    Select Case Day(target_date)
        Case Is >= 21
            GetSeasonNumber = 3
        Case Is >= 11
            GetSeasonNumber = 2
        Case Else
            GetSeasonNumber = 1
    End Select
End Function

「上旬」のように日本語を返しても良いのですが、使い勝手を考えて数値を戻り値にしました。
 上旬 ⇒ 1
 中旬 ⇒ 2
 下旬 ⇒ 3

ところでこの表、実は、今まで担当者が手作業で集計していました。日々刻々と変わる
未来の在庫数を管理するための重要な表です。この表を自動で作成できないか?という
のが、もともと受けた相談の趣旨でした。
そこで自動集計および表の自動作成までマクロを作りこんで、しかし、最終的に破棄しました。なぜならこの表は、そこかしこでセルが結合されていたからです。

↓ 赤い部分のセルが結合されています。
f:id:Infoment:20180803065502p:plain

これでは、データの再利用がとても難しくなります。そこで担当者を説得し、上中下旬の区分は残しつつ、自動でピボットテーブルを作成する方式に切り替えたのでした。
(担当者の作ったものを一旦「否定」して新たなものを導入するため、言われたまま作るより数倍気を遣いますね)。


参考まで。