土曜の昼、学校帰りの昼メシの思い出

エクセル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"なるのか

質問をしていて何か判らないことだらけで混乱してますが、お判りの方教えてください。

A 回答 (3件)

・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」=二桁表示の日となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/16 17:38

COUNT(A1)の意味については次のようなことでしょう。


A1セルが空白でしたら計算しないことになりますね。0が入力されれば計算されることになります。そのほかの意味として重要なことは日付はシリアル値として数値として数えられますが例えば文字列や文字列の形で日付が入力されているなどの場合には計算されないことになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/16 17:39

「次の式でうまく表示でき」たということなので、理解できているはずなんだけど、


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桁表示です。
    • good
    • 0
この回答へのお礼

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

齢70直前の老爺は、なかなか頭に入りませんので時間をかけて勉強します。

お礼日時:2009/10/16 17:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報