エクセルで生年月日を1つのセルに8桁で入力する方法

このQ&Aのポイント
  • エクセルで生年月日を1つのセルに8桁で入力するための方法を教えてください。
  • 現在はミスがあったり、制限がされていないため、条件付きで入力する方法が知りたいです。
  • 具体的な制限として、元号を1~4で制限し、年は元号によって制限し、月は1~12で制限し、日は1~31で制限したいです。
回答を見る
  • ベストアンサー

エクセル 生年月日 

おはようございます。 またまた教えて頂きたいです。 生年月日を1つのセルに8桁入れたいのですが 元号を、1=明治、2=大正、3=昭和、4=平成として 例 昭和30年11月1日 →「03301101」(「」=セルとします) このように入力したいのですが (03)元号→【01~04のみに制限したい】 (30)年→→【元号によって制限したい】 (11)月→→【01~12のみに制限したい】 (01)日→→【01~31のみに制限したい】 というような条件がつけたいのですが、いい数式が思いつきません。 現状は「04301101」平成30年11月1日とミスがあったり 日にちも31日以降でも入ってしまうので条件がつけたいです。 各セルに分けてつなごうとしても「0」が入らなかったりで困っています。 どうぞご教授下さい。お願いしますmm(_ _)mm どのようにしたら、ミスなく入力できるようになるか教えてください。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

>というような条件がつけたいのですが、いい数式が思いつきません。 「データ」「入力規則」にて「入力値の種類」を「整数」、「データ」を「次の値の間」で 元号A2→「最小値」「1」、「最大値」「4」 月C2→「最小値」「1」、「最大値」「12」 「データ」「入力規則」にて「入力値の種類」を「ユーザー設定」で 年B2→「数式」「=AND(B2>0,B2<=CHOOSE(A2,45,15,63,TEXT(TODAY(),"e")*1),MOD(B2,1)=0)」 日D2→「数式」「=AND(D2>0,D2<=DAY(DATEVALUE(CHOOSE(A2,"M","T","S","H")&B2&"/"&C2+1&"/1")-1),MOD(B2,1)=0」 >各セルに分けてつなごうとしても「0」が入らなかったりで困っています。 E2=TEXT(A2,"00")&TEXT(B2,"00")&TEXT(C2,"00")&TEXT(D2,"00") ※各セルのセルの書式設定の表示形式はユーザー定義で「00」としてください。 ※尚、年号が増えた場合、月以外の入力規則は変更が必要です。 例 平成が25年で終わって新年号が"J"として 元号A2→「最小値」「1」、「最大値」「5」 年B2→「数式」「=AND(B2>0,B2<=CHOOSE(A2,45,15,63,25,TEXT(TODAY(),"e")*1),MOD(B2,1)=0)」 日D2→「数式」「=AND(D2>0,D2<=DAY(DATEVALUE(CHOOSE(A2,"M","T","S","H","J")&B2&"/"&C2+1&"/1")-1),MOD(B2,1)=0」

oHaNa67
質問者

お礼

お礼が遅くなりすみません。 ありがとうございました。 参考にし、無事完成しました。

その他の回答 (7)

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

こんばんは! 参考になるかどうか判りませんが・・・ 一つの案です。 ちょっと手間がかかるかもしれませんが、元号・年・月・日をすべて入力規則のリスト設定します。 準備段階として、↓の画像のようにG~J列に表を作成しておきます。 G2~J2セルの表示形式は文字列として「01」・「02」・・のように入力しています。 明治の列は1~45まで・大正の列は1~15まで・昭和の列は1~64まで・平成の列は1~22まで連番を入れています。 当方使用のExcel2003の場合です。 G3~G48セルを範囲指定 → 名前定義 → 明治 としてOK H4~H18セルを範囲指定 → 名前定義 → 大正 としてOK I4~I67セルを範囲指定 → 名前定義 → 昭和 としてOK J4~J25セルを範囲指定 → 名前定義 → 平成 としてOK A2セル以降適当なセルまで範囲指定 → データ → 入力規則 → リスト を選択 元の値で G1~J1 を範囲指定 → OK B2セル以下を範囲指定 → データ → 入力規則 → リスト → 元の値の欄に =INDIRECT(A2) としてOK C2セル以下を範囲指定 → データ → 入力規則 → リスト → 作成している表内の 1~12 のセルを範囲指定 → OK D2セル以下を範囲指定 → 同様にリストから 作成している表の 1~31 を範囲指定し、OK これですべてのセルがリスト表示されます。 最後にE2セルに =IF(COUNTBLANK(A2:D2),"",HLOOKUP(A2,$G$1:$J$2,2,0)&TEXT(DATE(HLOOKUP(A2,$G$1:$J$3,3,0)+B2,C2,D2),"eemmdd")) という数式を入れオートフィルで下へコピーすると画像のような感じになります。 尚、すべてリスト内から選択する必要はなく、判っている数字に関しては直接入力しても構いません。 この場合、仮にA列で「大正」を選択しB列に「16」などその年号にない数値を入力すると注意画面が自動で表示されます。 そして、D列の日付に関しては小の月でも31と入力できますが、結果のD列には3/1のデータが表示されると思います。 以上、長々と書いてしまいました。 参考になれば良いのですが他に良い方法があればごめんなさいね。m(__)m

oHaNa67
質問者

お礼

お礼が遅くなりました。 皆様にはとても感謝します。 今後とも是非お願いします。 ありがとうございました。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.7

ANo.3 のshinkamiです。 もしかしてあなたは公務員? 役所には元号を数字で表現する書類が沢山残っていますね そんな詮索はどうでもよいことです。本題に入ります。 日付は通常の入力にして、これをテキストに変換する方法にしましょう この方が入力ミスは軽減されるのでは? 最初 A1~B5に添付のようなデータを用意します。 A8に日付を入力するとB8にテキスト変換されます。 B8には次の式を記述します。 =IF(A8>$A$4,"04"&YEAR(A8)-$B$5,IF(A8>$A$3,"03"&YEAR(A8)-$B$4,IF(A8>$A$2,"02"&YEAR(A8)-$B$3,"01"&YEAR(A8)-$B$2)))&TEXT(MONTH(A8),"0#")&TEXT(DAY(A8),"0#")

oHaNa67
質問者

お礼

お礼が遅くなりました。 再度回答すみません。 皆様にはとても感謝します。 今後とも是非お願いします。 ありがとうございました。

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

 例えば、04220229の様に、 元号→【01~04のみに制限したい】 月→→【01~12のみに制限したい】 日→→【01~31のみに制限したい】 という条件は満たしているものの、実際には有り得ない値が、入力される事も防ぐ事が出来る方法です。  勿論、【元号によって制限したい】にも対応していて、例えば03640107や04010108は入力可ですが、03640108や04010107は入力不可になります。  尚、Excelでは明治33年1月1日よりも前の日付けは、扱う事が出来ませんので注意なさって下さい。  E2セルに直接8桁の数字を入力する場合には、以下のような操作を行って、E2セルに書式と入力規則を設定して下さい。 E2セルにカーソルを合わせて、マウスを右クリック   ↓ 現れた選択肢の中から、[セルの書式設定]を選択してクリック   ↓ 現れた[セルの書式設定]ウィンドウの[表示形式]タグをクリック   ↓ [分類]欄の中から、[文字列]を選択してクリック   ↓ [セルの書式設定]ウィンドウの[OK]ボタンをクリック   ↓ メニューの[データ]をクリック   ↓ 選択肢の[入力規則]をクリック   ↓ 現れた「データの入力規則」ウィンドウの「設定」タグをクリック   ↓ 「入力値の種類」欄をクリック   ↓ 現れた選択肢の中の「ユーザー設定」をクリック   ↓ 現れた「数式」欄の中に以下の数式を入力 =IF(AND(ISNUMBER(MATCH(LEFT(E2,2),{"01","02","03","04"},0)),ISNUMBER(VALUE(LOOKUP(LEFT(E2,2),{"01","02","03","04";"M","T","S","H"})&MID(E2,3,2)&"."&MID(E2,5,2)&"."&MID(E2,7,2)))),TEXT(VALUE(LOOKUP(LEFT(E2,2),{"01","02","03","04";"M","T","S","H"})&MID(E2,3,2)&"."&MID(E2,5,2)&"."&MID(E2,7,2)),"g")=LOOKUP(LEFT(E2,2),{"01","02","03","04";"M","T","S","H"}),FALSE())   ↓ 「データの入力規則」ウィンドウの[OK]ボタンをクリック

oHaNa67
質問者

お礼

お礼が遅くなりました。 皆様にはとても感謝します。 今後とも是非お願いします。 ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

No4の回答の補足です。 >各セルに分けてつなごうとしても「0」が入らなかったりで困っています。 TEXT関数で表示できますが、補助列?のA~D列を使わずに直接E2セルに0から始まる数字を入力する方式のほうが簡単だと思います。 この場合は、E2セルの表示形式を「文字列」にして入力し、E2セルに以下のようなユーザー設定の入力規則を設定します。 =AND(CHOOSE(LEFT(E2,2)*1,"m","t","s","h")=TEXT((CHOOSE(LEFT(E2,2)*1,"m","t","s","h")&TEXT(RIGHT(E2,6),"00!/00!/00"))*1,"g"),(LEFT(E2,2)*1=4)*MID(E2,3,2)*1<=TEXT(TODAY(),"e")*1)

oHaNa67
質問者

お礼

お礼が遅くなりました。 再度回答すみません。 皆様にはとても感謝します。 今後とも是非お願いします。 ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

基本的にわざわざセルを分割して入力しないほうが簡単に条件付き書式を設定できますが、例示のデータのように4つのセルに分割して入力するなら、A2:D2セルを選択して「データの入力規則」で「ユーザー設定」にして以下の数式を入力してください。 =AND(TEXT((CHOOSE($A2,"m","t","s","h")&$B2&"/"&$C2&"/"&$D2)*1,"ge")=CHOOSE($A2,"m","t","s","h")&$B2,($A2=4)*$B2<=TEXT(TODAY(),"e")*1) 上記の数式は平成1年1月2日などの実際に存在しない日を入力した場合にも対応できるようにしてあります。 また、明治の場合は、シリアル値の開始日である明治33年1月1日以前の日も入力できないようにしています。

oHaNa67
質問者

お礼

お礼が遅くなりました。 皆様にはとても感謝します。 今後とも是非お願いします。 ありがとうございました。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

入力規則を設定します。 EXSEL2007 では [データ]→[入力規則]→[設定]と入ります。 添付は年号の設定ですが リスト欄には連続したセル内に設定することもできます。 >年→【元号によって制限したい】 これは別に年のエラー列でIF文で制限することになります。 以上ですが下記のように年号は年の途中で変わります。 年号ごとの最終日 ・明治45年7月29日 ・大正15年12月24日 ・昭和64年1月7日 ここからは提案です。 日付はセル一つで処理します。(明治33年1月1日未前は非対応ですが) 昭和30年11月1日 →「s30/11/1」(m=明治、t=大正、s=昭和、h=平成) セルA1が日付のデータとすると 年=year(A1) 但し西暦 月=month(A1) 日=day(A1) これのメリットは ・日付の表示形式は書式の表示形式で和暦、西暦どちらでも可能です ・表示形式を工夫すると曜日も含めることが出来ます。 ・期間計算が日付の引き算でできる ・満年齢の関数がある ・各年号でオーバーした日付を入れると年号が繰り上がる ・うるう年にも対応している ?但し月末以上の日付には対応していない(文字列となる)

oHaNa67
質問者

お礼

お礼が遅くなりました。 皆様にはとても感謝します。 今後とも是非お願いします。 ちなみに公務員ではないです。 ありがとうございました。

  • chiizu2
  • ベストアンサー率41% (164/400)
回答No.2

セルの入力規則を利用してください 使用方法は Excel 2003まで http://allabout.co.jp/gm/gc/297787/ Excel 2007以降 http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis.html 設定はA2~D2の各セルごとに A2(年号) 入力値の種類→整数 データ→次の値の間 最小値→1 最大値→4 B2(年) 入力値の種類→ユーザー設定 数式→=IF(A2=1,B2<=45,IF(A2=2,B2<=15,IF(A2=3,B2<=64,IF(A2=4,B2<=22,FALSE)))) 上記の式では小数でも入力できますが平成22.5年と間違うことはないでしょうから 実用上は問題ないと思います C2(月) 入力値の種類→整数 データ→次の値の間 最小値→1 最大値→12 D2(日) 入力値の種類→整数 データ→次の値の間 最小値→1 最大値→31 としてください

oHaNa67
質問者

お礼

お礼が遅くなりました。 皆様にはとても感謝します。 今後とも是非お願いします。 ありがとうございました。

関連するQ&A

  • 和暦変換

    和暦変換で悩んでいます。 悩んでいるのは明治→大正、大正→昭和で重なっている日についてです。 明治の範囲 明治元年9月8日(1868/10/23)~明治45年7月30日(1912/7/30) 大正の範囲 大正元年7月30日(1912/7/30)~大正15年12月25日(1926/12/25) 昭和の範囲 昭和元年12月25日(1926/12/25)~昭和64年1月7日(1989/1/7) 平成の範囲 平成元年1月8日(1989/1/8)~ ということなんですが、例えば「1912/7/30」を和暦に変換するときは、どちらにすべきなんでしょうか? ちなみにMicrosoftExcel で入力すると「1912/7/30」→「大正1年7月30日」と表示され 「明治45年7月30日」と入力しても、次のセルに移動すると「大正1年7月30日」となります。 ということは「1912/7/30」は大正と考えるべきなんでしょうか? (もっともExcel自体が1900/1/1までしか対応しておらず、 明治33年1月1日の前日が明治33年1月0日となるので。。。賢いんだかアレなんだかよくわからない^^;) 同様に「1926/12/25」は昭和でよいのか、大正で良いのかも判りません。 ここら辺が詳しい方、ぜひ教えてくださいませ<(_ _)>

  • エクセルで生年月日を入力すると

    エクセルで生年月日を入力したいんですが、 昭和57年1月1日 と入力したいんですが、 57/1/1と入力すると、 「1957年1月1日」と表示されてしまいます。 セルの書式設定→「日付」→「平成○年○月○日」と設定をすると、 「昭和32年1月1日」と表示されてしまいます。 *昭和で入力する方法はありませんか? もしできないのであれば、「57/1/1」と表示させるには、どうしたらいいか、教えて下さい。

  • 中国で元号は使われているのでしょうか?

    日本では明治、大正、昭和、平成などの元号が使われていますが、中国では現在、「元号」は使われているのでしょうか?

  • 元号の由来

    明治、大正、昭和、平成の4つの元号の由来を教えてください。 誰がどのようにして決めているのでしょうか。

  • エクセルに詳しい方教えて下さい

    エクセルに詳しい方教えて下さい 4220101 と7桁で表示されている生年月日を、 平成22/01/01または H22/01/01 と日付表示に直したいのですが、良い方法を教えて下さい。 平成=4 昭和=3 大正=2 明治=1 となっているデータで、数字の頭に元号の該当数字が入ります。 また、TEXT関数についてですが、 4220101のセル値を、 4/22/01/01に変換する式は=TEXT(セル,"0!/00!/00!/00")で合ってますか? (セル,"0/00/00/00")だとエラーになりました。 0の後ろにつく!はどんな意味があるのかを知りたいです。

  • vlookupとifを混合させる式?

    教えてください。 A列に番号、B1に名前、C1に明治、D1に大正、E1に昭和、F1に平成 と入力されており A2以下、番号、名前があり、その人の生まれ年にあった元号のセルに○が付けられています。 これが200名分程の表になっています。 そして、H1に明治、I1に大正、J1に昭和、K1に平成と入力して G1にA列の番号を(1~200程)入力します。 その結果G1に1と入れるとA2の人の元号(例、昭和K2に)下(2段目)の場所に○が入るように 出来ますでしょうか? 宜しくお願いします。

  • excel関数(年月日等の処理)について

    「元号コード+元号年yy+月mm+日dd」というデータを、 (例1:3620401 【3=昭和,昭和62年4月1日】) (例2:4021228 【4=平成,平成2年12月28日】) 「yyyy/mm/dd」の西暦の形に直したいと思っています。 excelでどのような関数を作ればよいのでしょうか? 元号コードは上記の昭和=3、平成=4のみです。

  • エクセルの西暦年月日入力

    ものすごく基本的な質問です。 エクセルの表の年月日欄に、西暦で入力したいのに、手元には昭和・平成の元号の資料しかない時、元号のまま入力しても、セルにはちゃんと西暦が表示されたことがありました。 これでいいんだと思い、次の行に移ったところ、今度は平成のまま表示されてしまい、困ってしまいました。 多分、関数の使い方がわかっていないおバカな自分のせいだな、とは思うのですが、どなたか教えて下さい。

  • 元号

    明治→大正→昭和→平成→□□ さて、次なる元号にはどんな漢字が適切か。

  • [Excel]セルへ特定の値のみを入力を許可する件

    例えば、"明治","大正","昭和","平成"の四つしかない「元号」の様に、特定の値のみセルへ入力を許可させたいと考えています。 以前、他の方が作成したシートで、リストボックスから選択させるようになっているのを見たことがあります。 この様にセルへ入力可能な値を選択方式とさせる方法をご存知の方がいらっしゃいましたらご教授願います。

専門家に質問してみよう