2016/01/12

曜日と表示形式とTEXT関数とFormat関数

実践ワークシート協会主催の Excel VBA セミナーでは、講師の田中先生が毎回必ず聞く質問がいくつかありますが、そのうちの一つが「曜日を表す表示形式」に関連する内容です。

Excel VBA セミナー ベーシック
http://officetanaka.net/seminar/seminar1.htm

なぜ VBA セミナーで表示形式?と思われるかもしれませんが、VBA プログラミングにおいて、日付=シリアル値から曜日を知るためには、曜日を返す専用の関数はなく、表示形式を利用して曜日を判定しなくてはならないからです。その関数が Format 関数です。

Format関数 (Excel VBA の関数)
http://officetanaka.net/excel/vba/function/Format.htm

この Format 関数はワークシート関数の TEXT 関数とほぼ同じ動きをします。

TEXT関数 (Excel ワークシート関数)
http://officetanaka.net/excel/function/function/text.htm

そして、このFormat関数やTEXT関数を使う上で知っておかなければならない知識が「書式記号」です。

曜日の鉄板ネタとして、書式記号の a を使って、aaa や aaaa で日本語での曜日をシリアル値から表示できます。ddd や dddd を使えば英語での曜日をシリアル値から調べることができます。

曜日を表示する
http://officetanaka.net/excel/function/tips/tips38.htm

曜日の表示で WEEKDAY関数と CHOOSE関数を使った数式を見ることがありますが、TEXT関数が一番簡単だと思います。ただし、aaa といった書式記号を覚えていなくてはなりません。

この書式記号、書式設定のユーザー定義書式でも使います。
セルを選択して Ctrl+1 でセルの書式設定ダイアログボックスが表示され、表示形式で書式記号を使って、セルに入力された表示方法を制御します。



セル内に入力されたデータがシリアル値になっていれば、このように曜日を調べることが可能です。シリアル値はExcelが内部で持っている万年カレンダーのようなもので、曜日のみならず、うるう年も管理しているので、うるう年の計算をしてチェックするような必要はありません。

Office TANAKA サイトも上記のURLページ以外にも多くの表示形式の記事があります。それだけ、表示形式や書式記号は深い、と言えるでしょう。

さて、冒頭に田中先生が表示形式についてかならず質問する、と書きましたが、この表示形式・書式記号の aaa を知っている人が年々「減って」きています。Excel 鉄板ネタの一つなのですが、本当にこれを知っている人が減っているのです。

あらためて、きっちりと伝えるべき技術は定番として伝え続けなければならないんだ、と感じる1件です。

ちなみに Power Query で日付から曜日を判定するには、WEEKDAY関数と似たような動きをする Date.DayOfWeek がヘルプの数式カテゴリから見つかりますが、ワークシート関数同様に TEXT 関数に相当するメソッドを使ったほうがよさそうです。Date.ToText で "ddd" で書式設定して日本語の曜日を表示させることが可能です。



Date.ToText のヘルプ
(Power Query が機械翻訳で電源のクエリになっているのはご愛嬌)

なお、この曜日については SharePoint のリストでも同様の動きと扱いをすることができます。これもチェックですね。

ExcelユーザーのためのSharePointリスト「集計値」列

Powered by Blogger.

自己紹介


PowerBI コミュニティ勉強会の 沼口 です。
https://powerbi.connpass.com/
最近の Excel は Office 365 のクラウドサービスと 連携する方向性が打ち出されています。この「Road to Cloud Office」ブログでは、Excel ユーザーの視点から Power BI Service や、Office 365 の活用方法を模索した結果をお伝えしています。
Microsoft MVP for Data Platform 2017-2018