上旬・中旬・下旬を求める関数
先日 Excel について、相談を受けました。
ある管理表において、表内の日付を「上旬・中旬・下旬」で分類し、記載行数を変えて
それを表現したいというのです。
詳細データとして、別に具体的な入庫日と入庫品目名 および 数量一覧があるのですが、その入庫日から、当月の「〇旬」を判別して集計する必要があります。
そこで、引数:日付に対し、戻り値:上中下旬となるユーザー定義関数を作成することにしました。
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
ところでこの表、実は、今まで担当者が手作業で集計していました。日々刻々と変わる
未来の在庫数を管理するための重要な表です。この表を自動で作成できないか?という
のが、もともと受けた相談の趣旨でした。
そこで自動集計および表の自動作成までマクロを作りこんで、しかし、最終的に破棄しました。なぜならこの表は、そこかしこでセルが結合されていたからです。
↓ 赤い部分のセルが結合されています。
これでは、データの再利用がとても難しくなります。そこで担当者を説得し、上中下旬の区分は残しつつ、自動でピボットテーブルを作成する方式に切り替えたのでした。
(担当者の作ったものを一旦「否定」して新たなものを導入するため、言われたまま作るより数倍気を遣いますね)。
参考まで。