over the rainbow

いわゆる日記です

エクセルの話

ある人から「エクセルで計算式をコピーすると意図した動作にならない」というヘルプが入りました。
計算式を見てみると下記のような感じ

=@IF(ISERROR(TEXT(WEEKDAY($A15,1),"aaa"))=TRUE,"",PublicHoliday.PublicHoliday($A15))

曜日を表示するか、または祝日を表示する計算式みたい。

エクセルで祝日っつーと、別シートに年ごとの祝日を列挙して、それにヒットしたら祝日と判定するってのが素人である私が思いつく方法だけど、これはもっとスマートにやっているっぽい。

でも、IF も ISERROR も TEXT も WEEKDAY も普通の関数だから良いけど、Public Holidayってなんぞ?
聞いたことがなかったのでChatGPT(正確にはリートン上の)に聞いてみたら、祝日判定をするVBAマクロだそうな。
もうちょっと詳しく教えてもらうと、

はい、エクセルVBAで祝日判定をするpublic.holidayというマクロについて詳しく説明しましょう。 🙂

概要**

  • public.holidayマクロは、エクセルのワークシートで日付を入力すると、その日が祝日かどうかを判定し、祝日の名称を返すVBAマクロです。
  • 国民の祝日データを事前に設定しておき、入力された日付がその祝日に該当するかを判定します。
  • 祝日の判定だけでなく、祝日の名称も返すことができるので、ワークシートに祝日情報を表示するのに便利です。

主な機能**

  • 日付を入力すると、その日が祝日かどうかを判定
  • 祝日の名称を返す
  • 春分の日秋分の日など、天文台の発表により変動する祝日にも対応
  • セルから直接マクロを呼び出せる

使い方**

1. エクセルのVBEエディタを開き、標準モジュールを作成する
2. 祝日データを格納した表を作成する
3. public.holidayマクロをモジュールに記述する
4. セルからマクロを呼び出して使用する

マクロの詳細**

  • 祝日データは、月/日/名称の形式で表に記載されている
  • 春分の日秋分の日は天文台の発表により変動するため、暫定的に3/20と9/23に設定
  • 2020年以降の春分の日秋分の日のみ対応
  • マクロ内で日付を判定し、祝日の名称を返す

応用例**

  • ワークシートに祝日情報を自動表示
  • 営業日カレンダーの作成
  • 祝日を考慮した勤務表の作成

まとめ**

public.holidayマクロは、エクセルVBAで祝日判定を行うための便利なツールです。祝日データの管理や、ワークシートへの祝日情報の自動表示など、様々な用途で活用できます。ぜひ試してみてください! 🙂

これらの情報を参考にしました。
[1] Qiita - 【ExcelVBA】祝日を加味して営業日を調べる方法 #日付計算 (https://qiita.com/nkojima/items/f6c1d177bae96939993a)
[2] jpn.org - 国民の祝日を取得するエクセルマクロ(Excel VBA) (https://excel-vba.jpn.org/section/29/GetJPNHoliday)
[3] DDO! JP - 祝日を返すマクロ [Excel VBA] - Tera Term のススメ (http://ttm.jimba.ddo.jp/teraterm/windows/ExcelVBA/JapanHoliday)
[4] Excelの歩き方 - 【簡単】Excelで祝日を自動計算するためのVBAマクロの作り方 (https://shintaro-blog.com/automatically-calculate-public-holidays-in-excel/)

リートンを利用する > https://wrtn.jp

てな感じ。
せっかくなので使ってみようと思って、どこから入手出来るのか聞いてみたら

はい、public.holidayマクロのダウンロード方法について詳しく説明しましょう。 🙂

ダウンロード方法**

  • public.holidayマクロは、オープンソースのプロジェクトとして公開されています。
  • 主なダウンロード先は以下の2つです:

1. **GitHub**
- [inoHolidays](https://github.com/INOPIAE/inoHolidays) というプロジェクトで公開されています。
- Excel Add-Inとして提供されており、様々な日付計算や祝日リストの管理などの機能が含まれています。

2. **個人サイト**
- [addinbox.sakura.ne.jp](http://addinbox.sakura.ne.jp/holiday_logic.htm) で公開されています。
- VBAおよびVB用の祝日判定用マクロ[関数]が公開されています。
- 『kt関数アドイン/kt祝日名取得』のロジックと同じものが使用されています。

使い方**

  • GitHub のinoHolidaysプロジェクトからは、Excel Add-Inとしてインストールできます。
  • 個人サイトからは、VBAマクロのコードをコピーして、自分のExcelファイルに貼り付けて使用できます。

注意点**

  • 祝日データは事前に設定する必要があります。
  • 2020年以降の春分の日秋分の日のみ対応しているものがあります。
  • 最新の祝日情報に合わせて、適宜データを更新する必要があります。

以上が、public.holidayマクロのダウンロードと使い方の概要です。ぜひ試してみてください! 🙂

これらの情報を参考にしました。
[1] GitHub - INOPIAE/inoHolidays: Excel add-In related to public holidays (https://github.com/INOPIAE/inoHolidays)
[2] AddinBox - AddinBox(祝日マクロ-1) (http://addinbox.sakura.ne.jp/holiday_logic.htm)
[3] Stack Overflow - VBA Download Outlook Attachment by Date - excel (https://stackoverflow.com/questions/72927349/vba-download-outlook-attachment-by-date)
[4] Microsoft Community - vba function that calculates working days and I want to ... (https://answers.microsoft.com/en-us/msoffice/forum/all/vba-function-that-calculates-working-days-and-i/40655db4-10dc-4aac-8938-5c90a092e0a2)

リートンを利用する > https://wrtn.jp

こんな感じでした。

でも、リンク先を見てみるとhttps://addinbox.sakura.ne.jp/holiday_logic.htmは、PublicHolidayという関数名ではないし、https://github.com/INOPIAE/inoHolidaysこっちはinoHolidaysだった。
PublicHolidayじゃないやん。
この辺がAIらしいところかな。正確じゃないところが。