• ベストアンサー

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

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

noname#152318
noname#152318

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

  • ベストアンサー
  • 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

  • EXCELで予測値を導き出す方法(複合バージョン)

    複雑になってしまいますが、みなさま、よろしくお願いします。 A列1~9行 50 70 30 60 10 90 50 60 20 A列10行 75もしくは76 以上のような数値とします。 (列はアルファベット、行は数字) B10 [式] =AVERAGE(A1:A10) C10 [式] =STDEVP(A1:A10) D10 =B10+C10 と式を入れ、 A列10行に「75」を入れますと、D10に表示される数字は75.38です。 A列10行に「76」を入れますと、D10に表示される数字は75.58です。 つまり、76で、はじめてD10の数字を超えます。 現在のやり方ですと、少しずつ数字を増減させて数字を導き出しているのですが、 このはじめて超える数字、この場合だと76を一発で出す関数式はどのようにすればいいのでしょうか? ○参考までに 昨日、同じような質問をしました。 http://oshiete1.goo.ne.jp/qa3270906.html 前回は、A列10行が空欄で数値が出るのですが、 今回は、A列10行に仮想的に数値を入れ、B10を出しておかないとD10が導き出せないことに気づきました。 B11 =ROUNDUP(AVERAGE(A1:A9),0) C11 =ROUNDUP(STDEVP(A1:A9),0) D11 =B11+C11 という感じに作ってみたのですが、B11の時点で49(B10では51.6)となり、最終のD列が一致しませんでした。

  • EXCELの式を宜しくお願いします。

    以下の式をお教え下さいませ。   A   B   C       D 1 100 10 100←入力   10   2 200 30 20 3 300 50 70 4 100 20 ↑ 5 100 70        結果数値 VLOOKUPとIF関数ぐらいで、何とかなりそうですが、なりません。 C列に目的の数字を入力し、それに対応するB列の数字(この場合10,20,70)をD列に出力したいのですが・・主旨が分かられますでしょうか?宜しくお願いします。

  • エクセルで出来るんでしょうか?

    下図の様のA列のデーターをB列に転記する際 C列で重複がないかをチェック、D列でB列に転記してない残りのNoを表示させる。 この様な作業を関数を使用できるものなのでしょうか?アドバイスお願いします。 できるんか、ぼけーレベルでしたらすみません;; 補足 ・B列には入力する順序規則はなし。 ・D列に表示する転記してないデーターの表示位置はD列ならどこに表示させてもかまいません。

  • エクセルの関数について

    A列に1,2,3・・・と回数があり、B列に一桁の数字(0~9)がランダムにあり、C列(C1)には『=IF(B1=1,"○","")』とあり、C2以降オートフィルでコピーされています。 B列の数値が『1』の時にだけC列に『○』が入りますが、D列に『C列の○と○の間隔』を数字で表示したいのですが、『=IF(B10=1,COUNTBLANK(C2:C9)+1,"")』としても、オートフィルで全てのD列にコピーしても参照セル範囲がランダムなので上手く行きません。 ○印が出現したら直前回の○印からの出現間隔を関数で自動表示したいのですが、関数が分かりません。あるいは関数の組合せ方法が思い浮かびません。 分かりやすく言うと、例えばナンバーズなどのある桁の0から9までの数字のうち、任意の数字が出現するたびにその横の列に○印を付け、さらにその横の列に出現した間隔を自動で表示できる関数が知りたいのです。 言葉で上手く表現できませんが、分かる方教えて下さい。お願いします。

  • EXCELの関数に詳しい方…

    EXCEL2007を使用です。 C列からB列を引いた値をD列に表示しています。 COUNTIFS関数でD列の値の1以上500未満の数値をカウント(添付の画のF2) させているのですがC列からB列の差分値をわざわざD列へ表示しなくても カウントさせる方法がありましたらご教授していただけると助かります。 1から499の範囲内の数値になるものが何個あるかしりたいです。 また作業量が膨大かつ見づらくなるため無駄なものは省けたらと思っています。 わかりにくいかと思いますがよろしくお願い致します。

  • エクセルにおける複数条件の関数について

    下記の内容を別シートに集計したいのですが、 関数が間違えているのかうまく数値が表示されません。 Aシートに以下の情報が入っています。 Cの列、C5からC54までの範囲に1から100の間で数字が入っています。 Dの列、D5からD54までの範囲に2013/6/1から2013/7/15までの日付が入っています。 例:C5に2と入っていて、D5に2016/6/3と入力されていれば該当し、 C5の2という値を別シートにその他のC列とあわせて合計を表示されるようにしたいです。 表示をさせたいBシートには、 D列のD5からD54範囲内の6月分(2014/6/1から2014/6/30まで)で、 C列に入力されている数値の合計を1つのセルに表示させたいです。 この場合の関数をお伺いしたい内容になります。 今、うまくいかない関数は、以下のような内容です。 =SUMPRODUCT(('201406'!$C$5:$C$54="○")*('201406'!$BW$5:$BW$54>="2014/6/1"*1)*('201406'!$BW$5:$BW$54<"2014/7/1"*1)) これだと、C列に○が入っていれば、その合計を表示できると思いますが、 1や5などの数字の合計を表示させるには・・で、困っています。 アドバイスいただけたらと思います。 ※関数をそのまま入力いたいと思っていますので、 返信は、関数でアドバイスいただけたら幸いです。 宜しくお願い致します。

  • オートフィルターで抽出後の集計 ユーザー定義関数

    以下のようなテーブルがあったとします。(図参照) A列 ID B列 数値A C列 数値B D列 抽出A E列 抽出B フィルターでD列E列で抽出した後に、B列の数値、例えば数値が1~3あるとします。 それぞれ1~3のC列の数値の合計の式をユーザー定義関数で作ることは出来ますでしょうか? コードかけません宜しくお願いします。 式1 フィルター抽出後のB列の1という数字のみのC列の数値の合計 式2 フィルター抽出後のB列の2   同様 式3 フィルター抽出後のB列の3   同様 VBAの知識はあまりありませんが、モジュールの追加とコードを貼り付ける作業は出来ます。 エクセル2013 64bitです。 宜しくお願いします。

  • エクセル2007関数

         A   B    C     D E 1   15  20  300 2   21  22  400 3   34  31  452 D1に、A列の数字のいずれかを入力すると、 E1に、A列のいずれかの数字を入力した行のC列の数字を表示させたい。 たとえば、 D1に、21と入れると、E1に400と D1に、34と入れると、E1に452と 表示させたいのですが、 関数は、ありますでしょうか?

  • エクセルで集計

    エクセルでの合計について教えていただきたいのです。 A1~A10000まで日付が、B1~B10000まで数値が入力されています。 B列の数値を50行ごとに合計し、C列に表示する方法。 現在は、sum関数で手作業です。 簡単に表示できる方法を教えてください。 また、C列に合計のある行をD列(D1・D2・D3・・・)、E列(E1・E2・E3・・・)、F列(F1・F2・F3・・・)に並べたいのです。(50行ごとに間引いて表示するような感じです) 現在は、=C50・=C100・=C150のように手作業です。 もっと多量のデータが入力されたシートもあります。また、100行ごと150行ごとなど合計行が違う場合もあります。 エクセル初心者です。 よろしくお願いいたします。

  • エクセル:日付単位での合計

    お世話になります。 A、B列に日付が入っています。 (A列に月、B列に日)C列に数値が入っています。 1日1行とは限らない。 同じ日付の最終行のD列にC列にある数値の合計を出す。(1日ごとの数値の合計) 途中に空白セルはない。 しかし後で行の挿入をする可能性があります。 例) A2~A50までは4→4月という意味 A51~は    5→5月という意味 B2~B5までは 1→1日という意味 B6~B8までは 2→2日という意味 B9~B12までは3→3日という意味 ・・・と続き B48~B50までは30→30日 この場合 4月1日の合計をD5に、4月2日の合計をD8、4月3日の合計をD12に入れる。(D2~D4は空白にする) A51からは5月になるのでD50には4月30日の合計を入れる。 4月1日の次に5月1日のデータが入力される可能性もあるので、日が変わる場合だけでなく月が変われば合計を出すことに対応したい。 また例えば行番号6に4月1日のデータがあとから挿入される場合にもきちんと合計が出るようにしたい。 よろしくお願いします。