EXCELで年令計算する関数DATEDIFを使って、生年月日の記入をすると年令を表示しますが、
記入がないと 111才 になってしまいます。生年月日の記入がないときには 0才 にしたいのですが、わかりません。
  たとえば、生年月日のセルを         B12
        基準日(関数TODAY()を使用 )を E3
        年令表示セルを           B11
にして、セルB11に次の関数を入力します。
    =DATEDIF(B12,E3,"Y") & "才"
すると、生年月日がセルB12に入っていれば、年令を表示しますが、生年月日の記入がない(空欄)と111才と表示されてしまいます。空欄では0才などにしたいのですが、ご教示をお願いします。
セルの西暦・和暦やTODAY関数が影響するのかわかりません。

A 回答 (4件)

=IF(B12="",0,DATEDIF(B12,E3,"Y")) & "才"



でいかがですか。
    • good
    • 0

>記入がないと 111才 になってしまいます


(1)不思議そうに書いているが、日付シリアル値というエクセルの仕組みをしらないからそうなる
知らなければ、Googleででも「エクセル 日付シリアル値」で照会して勉強のこと。
(2)またエクセルでは、関数の引数で、数を入れるべき場合に、指定セルが空白だと0と看做して計算されることがほとんど
そして、日付シリアル値の0とは1999年12月31日のこと。だからその後現在年(月日)は111年たっているということだ。
=DATEDIF(A2,TODAY(),"y")
のような式を、=IF(A2="","",DATEDIF(A2,TODAY(),"y"))
にして別扱いで、計算させないようにすれば良い。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。日付シリアル値のためかなと思いましたが基準年が1999年12月31日で0とは思いませんでした。勉強になりました。111才の意味がわかりました。
=IF(B12="","",DATEDIF(B12,TODAY(),"y"))で実施しましたが年号が表示されました。
=IF(B12="",0,DATEDIF(B12,E3,"Y")) & "才"でうまくいきました。ありがとうございました。

お礼日時:2011/04/16 21:13

 



=if(B12="",0,datedif(B12,E3,"Y")&"才")
あるいは
=if(B12="",0,datedif(B12,E3,"Y"))
として、セルの書式設定で表示形式を
G/標準"才"
 
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。教えていただいた関数
=IF(B12="",0,DATEDIF(B12,E3,"Y")&"才")では"才"が表示されませんでした。
=IF(B12="",0,DATEDIF(B12,E3,"Y"))&"才"でうまくできました。
=if(B12="",0,datedif(B12,E3,"Y"))でセルの書式設定で表示形式を G/標準"才"にしてもできることがわかりました。
ありがとうございました。

お礼日時:2011/04/16 20:58

原因は分かりませんが、とりあえず


B11=IF(B12="",0,DATEDIF~) と
してみては如何でしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。教えていただいた関数で実施しますと、「入力した数式は正しくありません。」のエラー表示が出てきてしまいました。原因はよくわかりませんでした。
ありがとうございました。

お礼日時:2011/04/16 20:50

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcelのDATEDIF関数を使って年齢を出しても正しく表示されません

今、調査のためにExcel2003の関数を使って、年齢を出す作業をしようとしています。
同じような質問を参照してやってみたのですが、以下のように現れます。
セルD2:「1982/1/1」←生年月日
関数:「=DATEDIF(D2,TODAY(),"Y")」
その結果表示された値:「1900年1月26日」

なぜ年齢が表示されないのかが疑問です。
どうか宜しくお願いします。

Aベストアンサー

セルの書式設定で「数値」にしてください。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

QEXCELに関する質問です。 例えば【D列】のセルに「●年▲ヶ月」,「●年」,「▲ヶ月」という勤続年

EXCELに関する質問です。
例えば【D列】のセルに「●年▲ヶ月」,「●年」,「▲ヶ月」という勤続年月データが入力されているとします。この列の平均年・ヶ月を求める事は可能でしょうか?宜しくお願い致します。

Aベストアンサー

それは数字で入ったデータではなく、文字で入ったデータということでよろしいでしょうか?
であるならば、該当する●(年)と▲(ヶ月)を抽出し、年もしくは月に単位を合わせて合計(1年3ヶ月なら1+3/12=1.25年or12*1+3=15ヶ月)を表示する列を作り、その列の平均を求め、結果を年と月に分ける必要があります。

具体的には、Eに年、Fに月、Gに合計(月単位)を表示するとして、
E1=IF(ISERROR(FIND("年",D1))=TRUE(),0,LEFT(D1,FIND("年",D1)-1
F1=IF(ISERROR(FIND("ヶ月",D1))=TRUE(),0,IF(ISERROR(FIND("年",D1))=TRUE(),LEFT(D1,LEN(D1)-2),LEFT(RIGHT(D1,LEN(D1)-FIND("年",D1)),LEN(D1)-FIND("年",D1)-2)))
G1=E1*12+F1

平均はAVERAGEで求められるので、それをH1に表示させるとして、
H1=AVERAGE(G:G)
これをI1に年、J1に月、と分けるので
I1=INT(H1/12)
J1=MOD(H1,12)
この場合平均の年は整数ですが、月は小数になる可能性が高いです。
1つのセル(K1とします)に「平均○年△ヶ月」とまとめて表示させたいなら、
K1="平均"&I1&"年"&J1&"ヶ月"
としたいところですが、小数でもそのままX.XXXXXXXXXヶ月といった感じの表示になってしまうので、
K1="平均"&I1&"年"&ROUND(J1,□)&"ヶ月"
としましょう。丸めたい桁数に合わせて□に数字を入れてください。
(1とすればX.Xヶ月。2とすればX.XXヶ月。といった風になります。小数の場合で、一番下の桁が0となる場合は、0以外の数字の桁までしか表示されません)
この場合四捨五入ですが、繰上げで表示したい場合はROUNDUP、切捨てで表示したい場合はROUNDDOWN、にそれぞれ変更してください。()の中は同じです。

今回は段階別に多数のセルに分けましたが、
中身が理解できるのであれば、H1~K1の内容は1つのセルに詰め込むことができます。
同様にE~G列も1列で表示させることはできます。
ただ、G列の表示を省略してH1の結果を出すには配列計算が必要になるのでお勧めしません。
可能であるなら、最低1列作業列を作り、その行のD列にあるデータが何ヶ月(もしくは何年)を表しているのかをきちんと表示させるようにしましょう。
段階を踏んでセルを分けることにより、途中計算がきちんと表示され、ミスがあった場合も分かりやすく、なおかつ修正し易いです。
普段使う時に邪魔であれば、非表示にすることも可能ですので、無理に1つのセルに詰め込まないようにしましょう。

それは数字で入ったデータではなく、文字で入ったデータということでよろしいでしょうか?
であるならば、該当する●(年)と▲(ヶ月)を抽出し、年もしくは月に単位を合わせて合計(1年3ヶ月なら1+3/12=1.25年or12*1+3=15ヶ月)を表示する列を作り、その列の平均を求め、結果を年と月に分ける必要があります。

具体的には、Eに年、Fに月、Gに合計(月単位)を表示するとして、
E1=IF(ISERROR(FIND("年",D1))=TRUE(),0,LEFT(D1,FIND("年",D1)-1
F1=IF(ISERROR(FIND("ヶ月",D1))=TRUE(),0,IF(ISERROR(FIND("年",D1))=T...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

QEXCEL2002で,IF thenの関数式を使い、値が「空白」なら、もう一方の関数式を代わりに代入する方法

 EXCEL2002で,IF thenの関数式を使い、値が「空白」なら、もう一方の関数式を代わりに代入する方法を教えて下さい!

(1) 通常なら、AA5というセルに、
=RSS|'1332.T'!現在値
 という関数式が入っているとします。
(2) ここで、元々上記式が入るAA5セルの値が「空白」(⇒決して「0」ではない。ことに留意して下さい。)であるなら、もうひとつ用意した
 =RSS|'1332.T'!○○○
を文字通り、選択的に用い、IF thenの関数式を使って、その値を表示させる。
 どちらの式も命令文の一文として、勿論、AA5に入っています。
 即ち、間違っていると思うのですが、数式のイメージとしては、
 IF =RSS|'1332.T'!現在値=「 」 then =RSS|'1332.T'!○○○
(3)こうしたIF thenの関数式の”正しい式”を教えて頂けないでしょうか? 
 何卒、宜しく御願いします。

Aベストアンサー

(1)>Range("AA5").Formula⇒Range("AA5:AA229").Formulaに変更すれば
あくまでAA5が空白でいいという前提ならOKですが
たぶんAA6に対しても、となってくるのでは?そうなるとFor~Next使わないとたぶん無理
(2)私もRSSは知らなかったのですが、テストしてみたら何となく外部参照しているくらいしか分からなかったんで…
>返される値が、空白
どゆこと?関数が入力されているわけではないのですか?
それともマクロで数式=.Valueとなっているのでしょうか?
>前の条件式、RSS|'1332.T'!現在値 と比較してみると、唯一の違い は、「○○○」の部分でしかないので、
 「○○○」以前の数式「RSS|'1332.T'!」を上手に「置換」を使って、「入力式」を普遍化できないでしょうか?
言っていることがいまいち…

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QEXCEL DATEDIF関数について

質問があります。

EXCELのDATEDIF関数で日付の期間内の年数、月数、日数、時間を2つのデーターから算出したいのですが、うまくできません。

そもそもDATEDIF関数では時間に対しては対応できないのでしょうか?
また算出できる方法が有れば教えて頂けないでしょうか?

データー基(例)
A,14/04/30 00:01
B,14/05/02 05:03

宜しくお願い致します。

Aベストアンサー

>そもそもDATEDIF関数では時間に対しては対応できないのでしょうか?
>また算出できる方法が有れば教えて頂けないでしょうか?
DATEDIF関数は開始日から終了日までの期間を計算する関数で年数、月数、日数までが対象です。
時間も含む場合は終了日時-開始日時として計算し整数部を日数、端数部を時間に分けて文字列に変換すべきでしょう。
A1=2014/04/30 00:01
B1=2014/05/02 05:03
C1=INT(B1-A1)&"日"&INT(MOD(B1-A1,1)*24)&"時間"&ROUND(MOD(MOD(B1-A1,1)*24,1)*60,1)&"分"
C1セルは日数と時間数となります。
月数や年数を必要とするときは1ヶ月の日数、1年の日数を定義する必要があるでしょう。

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

QExcelのDATEDIF関数にて

Excel2002です。
DATEDIF関数とTODAY()関数を使って
2004/1/1から今日までの日数を出すにはどのようにセルに書けばよいのでしょうか教えて下さい。

=DATEDIF(2004/01/01,today(),"D")
と書くと36173と言う数字が帰ってきてしまいます。

よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

日付は、「""」で括りましょう。

=DATEDIF("2004/1/1",TODAY(),"D")

「""」で括らないと、「2004/1/1」は、
2004÷1÷1=2004
という数値になり、2004というシリアル値に対応する日付
「"1905/6/26"」
を指定することになります。
(だから、36173のような数値になります。)

なお、単に日数を出すなら、単純な引き算でも出来ます。

=TODAY()-"2004/1/1"

この場合も、日付には「""」が必要ですが。


人気Q&Aランキング

おすすめ情報