- ホーム >
- 応用操作 >
- エクセル(Excel)編 >
TEXT関数 ~ 数値を日指定した文字列に変更する ~
Excelは非常に汎用的なソフトウェアであるため、業務用のシステムや他のソフトウェアなどからデータを取り込んで(読み取って)利用することができます。
データをExcelで加工し、グラフ化などに役立てるわけですが、中でも多いのがCSV形式のデータです。(CSVについては、主な拡張子 を参照してください)
このように外部のデータを利用した時によくあるのが、数値や日付が文字列として認識されているために、Excelでうまく加工できないケースです。
特に日付表示や時間表示については、24時間表示とシリアル値 で学習のとおり、Excel内部でシリアル値として認識されていなければそれを利用して計算することができません。
取り込んだデータを日付表示に変換する方法はいくつかあり、区切り位置の指定 で学習した区切り位置指定から簡単に変換することができますが、本項で学習するのは、
TEXT関数(テキスト)
を使った表示変換になります。
TEXT関数は、文字どおりテキスト、つまり「文字列」に変換する関数です。したがって、
TEXT関数で変換した値は計算に利用することができない
ということになります。
ではなぜ、わざわざ学習するのかというと、日付表示に変換するのにTEXT関数を利用する方法がインターネット等で広く紹介されているからです。
データの利用目的に合わせて使い分けることが必要になるので、このことをまず理解したうえで、下図のような3パターンの日付表示についてみていきましょう。
それぞれよくある日付の表示形式になります。
まず、これらの日付表示は、CSV等で抜き取ったデータを活用した場合によくある現象で、Excel上では文字列として認識されています。
どのように判断するのかというと、すべて左詰めで表示されているからです。特に「1」は一見すると数値認識に見えますが、セルの左上に緑色の三角マークが付いています。
なぜかというと、データの先頭にシングルクォーテーション「'」が付いているためです。
ゼロ値の表示と非表示 で学習のとおり、これによって文字列として扱われます。CSVで抽出したデータにはこうした記号が付いたり、空白(スペース)がデータのうしろに挿入されていたりすることがあります。
他の「2」と「3」も文字列として認識されています。まずは、シリアル値として認識する日付形式に変換してみましょう。
いくつか方法がありますが、もっとも簡単なのは、区切り位置の指定 で学習した区切り位置指定から変換する方法です。
復習になりますが、セルをまとめて選択して、「データ」タブの「区切り位置」ボタンから区切り位置指定ウィザードを起動します。
この場合はどちらを選択してもかまいません。3ページまで「次へ」で一気に進みます。
ここで「日付」を選択し、変換後の表示先セルを指定して「完了」をクリックすると、選択した文字列がまとめて変換されます。
変換後の日付表示のほうは右詰めで表示されています。シリアル値で認識されているかどうか確かめるには表示形式を「標準」に切り替えます。シリアル値が表示されたら文字列認識ではないということになります。
同様に、生年月日「2」の形式でも変換することができます。
同様に、生年月日「3」の形式でも変換することができます。
つまり、こうした代表的な日付の書式については、わざわざ関数を使用しなくても「区切り位置指定ウィザード」ですべて簡単に変換することができるのです。
では、TEXT関数を使ってみましょう。
TEXT関数の使い方は簡単で、変換元のセルを指定して、引数となる表示形式を指定するだけです。
この場合は、文字列「19800902」の「A3」セルを指定して、表示形式に「yyyy/mm/dd」を指定しています。(表示形式については後述します)
これで「OK」ボタンをクリックするとどうなるでしょうか。じつはエラーとなってしまいます。
もうおわかりのことと思いますが、
TEXT関数は数値やシリアル値を文字列に変換する関数
であるため、文字列を文字列に変換する関数ではありません。
したがって、文字列認識されている日付をシリアル値の日付に変換する関数としては使えないということです。この前提を理解せずに関数で日付変換しようと思い込んでいる方があります。このことはしっかり理解しておいてください。
では、シリアル値に変換した日付を、さらにTEXT形式で文字列に変換してみましょう。
今度は変換元となるセルをシリアル値の「B3」セルを指定しています。すると、左寄せの文字列として日付表示が変換されました。
また、TEXT関数は「yyyy/mm/dd」の部分を変更することで、さまざまな表示形式にすることができます。和暦表示や当該日付の曜日などを文字列として表示させることができます。
「C4」セルの数式は「=TEXT(B4,"ggge年m月d日")」、「C5」セルの数式は「=TEXT(B5,"aaa曜日")」です。
このように、引数に表示形式を指定することで日付だけでなく、曜日も表示することができます。日付と組み合わせて「"ggge年m月d日aaaa")」などとすることで、日付と曜日も同一セルで表示させることも可能です。
表示記号は 書式のユーザー定義 で学習したユーザ定義の記号と同じです。以下はTEXT関数で使われる代表的な記号ですが、この他にも多くの記号を使うことができます。
記号 | 解説 |
---|---|
yyyy/yy | 西暦表示の年の記号。yの数は桁数。 (2020年:yyyy=2020、yy=20) |
mm/m | 月の記号。mの数は桁数。 (9月:mm=09、m=9) |
dd/d | 日「の記号。dの数は桁数。 (9日:dd=09、d=9) |
ggge/gge/ge | 西暦表示の年の記号。gの数は元号表記。 (2020年:ggge=令和2、gge=令2、ge=R2) |
aaaa/aaa | 曜日の記号。aの数は曜日の表示数。 (aaaa=金曜日、aaa=金) |
ただし、書式のユーザー定義 で学習のとおり、シリアル値の日付であっても、同じようにユーザー定義で書式変更することが可能です。
わざわざTEXT関数を使って文字列にする意味はあるのでしょうか?
と思われることでしょう。はっきりいってデータとして扱えないために、個人的にはあまり用途がありません。
例えば、下図のように日付を組み合わせた「文章」を表示する場合に利用します。
この文章は日付と時間の部分にTEXT関数を使っています。時間の記号は、年月日と同様に「h」と「m」になります。少々応用的ですが、文字列との組み合わせは「&」で結合することができます。
このような場合は、通常どおりセル参照すると、文字列として認識せずにシリアル値が表示されてしまいます。
表示形式を変更する場合は、どのような目的で変更するのかを考え、適切な変換方法を選択するようにしましょう。
更新履歴
- 2020年9月15日
- ページを公開。
参考文献・ウェブサイト
当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。
- 文献
- なし
- サイト
- なし
- 管理人のつぶやき
- Twitterのフォローお願いします!