• ベストアンサー

エクセル 昭和を3と表示する式について

エクセル2007です。 S28.6.12を3280612と表示するため調べたところ次の式でうまく表示できました。 =IF(COUNT(A1),FIND(TEXT(A1,"G"),"MTSH")&TEXT(A1,"RMMDD"),"") この式の中で判らないところがあります。 一つは、COUNT(A1)です。 COUNT関数は、数値データのセルを数える関数ですが、この数式でCOUNT(A1)(結果は1になります)を使うのかということです。 又次に判らないところは、 1の時に文字列が開始位置から何番目にあるかを返す、FIND関数で検索文字列をTEXT(A1,"G")とするのか、その中の"G"はなにを意味するのか さらに対象がFIND(TEXT(A1,"g"),"MTSH")でこの結果が3になるのか TEXT(A1,"RMMDD")の中のRは何を表すのか、そしてこの答えが"280612"なるのか 質問をしていて何か判らないことだらけで混乱してますが、お判りの方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • srxmk3pro
  • ベストアンサー率53% (527/980)
回答No.2

・COUNT(A1)の意味 あくまでも日付の制御にかかわるのは「FIND(TEXT(A1,"G"),"MTSH")&TEXT(A1,"RMMDD")」の部分ですが、この関数式は対象セルがブランクでも反応します。ブランクを日付ゼロとみなし、明治30年1月0日と判定します。エクセルでは数値1を1900/1/1とするためです。それを嫌ったのでしょう。 =IF(A1=FALSE,"",FIND(TEXT(A1,"G"),"MTSH")&TEXT(A1,"RMMDD"))でも同様の働きができますが、書いた方の癖なのでしょう。 ・FIND(TEXT(A1,"g"),"MTSH")でこの結果が3になるのか FIND関数は指定された文字列 (検索文字列) を他の文字列 (対象) の中で検索し、その文字列が他の文字列内で最初に現れる位置を左端から数え、その番号を返します。 TEXT関数は対象を任意の表示形式に変換する関数で、この場合A1セルの日付を元号="g"、つまり明治ならM、大正ならT、昭和ならS、平成ならHに変換します。 昭和の日付なら「S」に変換されますので、"MTSH"の中の「3」番目であると処理します。 ・TEXT(A1,"RMMDD")の中のRは何を表すのか、そしてこの答えが"280612"なるのか すでに述べたようにEXT関数は対象を任意の表示形式に変換する関数ですので、この場合は「R」=元号をのぞいた年数、「MM」=二桁表示の月(6月=06)、「DD」=二桁表示の日となります。

gyouda1114
質問者

お礼

詳細なご説明ありがとうございます。 勉強になります。 新しいことばかりで 齢70直前の老爺は、なかなか頭に入りませんので時間をかけて勉強します。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

COUNT(A1)の意味については次のようなことでしょう。 A1セルが空白でしたら計算しないことになりますね。0が入力されれば計算されることになります。そのほかの意味として重要なことは日付はシリアル値として数値として数えられますが例えば文字列や文字列の形で日付が入力されているなどの場合には計算されないことになります。

gyouda1114
質問者

お礼

回答ありがとうございます。 勉強になります。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

「次の式でうまく表示でき」たということなので、理解できているはずなんだけど、 1.COUNT(A1) A1が空でなかったら、A1<>""と同じ意味で使ってます。 2."G" 元号のアルファベット1文字を返す表示形式です。「S」が返ります。 3.FIND(TEXT(A1,"g"),"MTSH") 2.で返した「S」が"MTSH"の何番目にあるか調べています。3番目だから「3」を返します。 4.TEXT(A1,"RMMDD") 「R」は元号を除いた元号標記の年を返す表示形式です。「28」が返ります。MMDDは月日のそれぞれ2桁表示です。

gyouda1114
質問者

お礼

回答ありがとうございます。 勉強になります。 齢70直前の老爺は、なかなか頭に入りませんので時間をかけて勉強します。