• ベストアンサー

Excelの日付の処理を教えてください。

 下図のように、B2→ 1985            C2→ 昭和60年と表示させています。             〔 C=DATE(B2,4,1) 〕4月1日の設定です。            D列は、数字を手作業で打ち込んでいます。        そこで、D列に数値でC列の年号の数値だけ表示する          関数式を教えてください。     

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 D2セルに入力する関数は、次の様なものとすれば良いと思います。 =IF(ISNUMBER(C2),TEXT(C2,"e")+0,"")

noname#152318
質問者

お礼

 ありがとうございます。 所期の目的をクリアできました。

その他の回答 (6)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.5です! たびたびごめんなさい。 投稿した後で気づいたのですが、 前回の方法では各元号の最終年の場合は「0」となってしまいますね。 それに対処する数式を!と思ったのですが、IFでそれぞれ分岐しなくてはならないので とりあえず、アナログな方法で悪いのですが 仮に「0」が表示された場合は手作業でC列の数値を入れてみてください。 時間があれば少し考えてみようと思います。 検証せずに投稿してごめんなさいね。m(_ _)m

noname#152318
質問者

お礼

>投稿した後で気づいたのですが、 前回の方法では各元号の最終年の場合は「0」となってしまいますね。   これは、変換表を大きく作れば、C列・D列共に数値で表示できて、「0」表示の問題も解決し、PCの負担も軽いだろう閃いたのです。  ご回答のVLOOKUP関数を使う方法であれば、と江戸時代の元号も簡単に変換できるわけですね。  「変換表」を作るのは1度だけですから苦にはなりません。     本来なら(実務に使ったことは無いのですが)Accessで処理をする作業でしょうか? Accessは試用しただけで分かりません。  実は、B列は B2 の値をスピンボタンで適宜変化させて、B3 セル以下は =B2+1 をコピーして数値入力しました。 セルの書式設定で5年ごとに青色に表示しています。   実用では、いくつかの単位(年号も)換算表を作り、スピンボタンで中央の列の値を変えて上下の列に前後の値を表示させています。  必要な部分を強調・判断できるようにもしています。    VLOOKUP関数は助かります。 ありがとうございます。    

noname#152318
質問者

補足

できれば、平成元年と昭和64年なども区別したいのです。<m(__)m>

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! 横からお邪魔します。 B列は西暦の年のみの数値が入っている訳ですよね? 一例です。 ↓の画像のように表を作成しておきます(G列のみでOKです) そしてD2セルに =IF(B2="","",B2-VLOOKUP(B2,$G$2:$G$5,1,1)) という数式を入れオートフィルで下へコピーすると画像のような感じになります。 ※ 余計なお世話かもしれませんがC列のセルの表示形式をユーザー定義から gggee年 としておくと数値が2桁で表示されます。 以上、参考になれば良いのですが・・・m(_ _)m

noname#152318
質問者

お礼

 VLOOK関数! 閃きました。

  • oct1290
  • ベストアンサー率35% (75/213)
回答No.4

シリアル値が表示されているので最初の書式設定でユーザー定義から(e)をいれて表示できると思いますが 手順を記載しなかったのでご面倒かけます。。

noname#152318
質問者

お礼

ご回答ありがとうございます。

noname#152318
質問者

補足

 >シリアル値が表示されているので最初の書式設定でユーザー定義から(e) シリアル値=思い出しました。  (e) が理解できません。試行してみます。

  • oct1290
  • ベストアンサー率35% (75/213)
回答No.3

C1=--MID(C1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},C1&1234567890)),LEN(C1)*10-SUM(LEN(SUBSTITUTE(C1,{0,1,2,3,4,5,6,7,8,9},)))) でも可能

noname#152318
質問者

お礼

補足にお礼でした。

noname#152318
質問者

補足

>C1=--MID(C1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},C1&1234567890)),LEN(C1)*10-SUM(LEN(SUBSTITUTE(C1,{0,1,2,3,4,5,6,7,8,9},)))) 再再度のご回答ありがとうございます。  C1は今回使用していないので、全てC1→C2として   使用させていただきました。     ANo.2と同じく、昭和60年ですと 31138 を返します。       D列を 60 にしたいのですが。 <m(__)m>  

  • oct1290
  • ベストアンサー率35% (75/213)
回答No.2

補足がきたので 書式以外でMID関数で可能かな? =MID(文字列,開始位置,文字数) 左から3文字目で2文字 =MID(C2,3,2)で同でしょうただ昭和や平成、大正、明治なら可能ですが3文字になると??

noname#152318
質問者

お礼

ありがとうございました。

noname#152318
質問者

補足

>=MID(C2,3,2)で同でしょうただ昭和や平成、大正、明治なら可能…   再度のご回答ありがとうございます。    C列が、文字列の場合は、C列の、3文字目から      2文字選択で所期の目的のクリアです。  今回は、C列をDATE関数の日付数値で返して、    それを書式設定で元号に変えています。  したがって、MID関数の値は、   その日付数値の3番目と4番目を返してくるので    元号の数字とは違ってしまうようです。         日付数値は、私の造語で     通用する術語では無いと思いますが。<m(__)m>       Excelは2007を使用しています。

  • oct1290
  • ベストアンサー率35% (75/213)
回答No.1

書式設定で(e)で年号だけ表示するのは同でしょう C列にB列をコピーし書式設定でユーザー設定から設定できます

noname#152318
質問者

お礼

 ありがとうございました。

noname#152318
質問者

補足

早速ありがとうございます。  C列に、書式設定で和暦〔元号〕を表示できました。   D列に、元号の数字部分を数値で表示したいのです。 <m(__)m>    説明の都合で、順に並べました。

関連するQ&A