• ベストアンサー

エクセルで生年月日の数字のみを別々の列に取り出すには…?

うまく説明できるか心配なのですが…どなたか教えてください。  A列に生年月日が以下のように入っています。  平成9年3月15日 がセルA1  平成13年12月4日 がセルA2  平成2年1月1日 がセルA3  …のようになっています。  これをB列に年の数字のみ 9,13,2,…     C列に月の数字のみ 3,12,1,…     D列に日の数字のみ 15,4,1,…  と取り出したい?(分けたい?)のです。 というのも、アクセスのテーブルがこの形で入力するようになっていて、エクセルのワークシートにはすべてがつながって(スペースもなく)入力されているため、上記のようにできればアクセスに貼り付けやすいと考えました。どちらのソフトも詳しくはないので、アクセスのデータベースは変更したくないのです。 どなたか知恵をお貸しください。お願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.6

>A1が平成9年7月11日で B1に数式を入力すると >なんと明治33年1月9日と結果が出てしまいました。 B1のセルの表示形式が、自動的に日付になってしまったからです。 「--」を取ると文字列が返されるので、そのまま表示されますが、「--」を付けると数値が返されます。 (No.5の説明の通り) すると、数式中に日付が入ったA1があるので、Excelが余計な気をきかせて、勝手に表示形式を日付にしてしまうことがあります。 Excelでは、日付というのはシリアル値という数値で管理されています。 シリアル値というのは、「1900/1/1」を「1」として、1日経過するごとに+1される値です。 (時間の経過は小数で表されます。つまり0.5で12時間) セルの表示形式が日付のために、「明治33年1月9日」となっているセルには、 実際には、「9」という数値が入っているということです。 つまり、「明治33年1月9日」(1900/1/9)のシリアル値が、「9」ということです。 さらに言えば、「明治33年1月9日」というのは、あくまで見た目の文字で、セルの内容はまったく違う(この場合の内容は「9」)ということです。 ちなみに、A1「平成9年3月15日」の表示形式を「標準」にすると、 「35504」 という数値になります。 つまり、このA1も実際のセルの内容は、「35504」だということです。 説明が長くなりましたが、結論としては、セルの表示形式を「標準」にすればいいということです。

その他の回答 (6)

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.7

maruru01さん。ありがとうございます。ここでお礼を言うのも変ですが、私も参考になりました。 で、 >A1が平成9年7月11日で B1に数式を入力すると >なんと明治33年1月9日と結果が出てしまいました。 の件ですが、 maruru01さんのおっしゃることが原因ではあるのですが、書式が日付表示になってしまった原因は、A列のとなりのB列で列を挿入したからではないかと思います。 列を挿入すると、挿入列の左隣の書式が引き継がれます。 A列の書式が和暦の表示形式になっているので、このようなことが起きたのだと思います。 いずれにしても、表示形式を「標準」や「数値」にしてやれば治ります。

minatomo
質問者

お礼

左隣の書式が引き継がれる→これも勉強になりました。 今までも、書式が変わっていて、目的の表示ができないことがありました。原因不明で困っていたのですが、列挿入が原因だったのかもしれません。これを知っておくことは、大切ですよね。ありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

>「--」って何ですか? TEXT関数は、YEARやMONTHやDAYと違い、文字列を返します。 実際に、「--」を取った数式にすると、左揃えの文字列が表示されます。 もちろん、見た目は同じだし、横位置も設定し直せばいいのですが、最初から数値データに変換しておけば、右揃えになるので、月や日のセルと揃います。 その文字列→数値に変換する役割を持つのが、「--」の部分です。 Excelでは、数値と認識出来る文字列を四則演算の中に入れると自動的に数値に変換してくれます。 (ただし、数値と認識出来ない場合はエラーになります。) 今回は和暦の数字なので、明らかに数値と認識出来ます。 で、ポイントは、値を変化させずに四則演算させるということです。 そして、「--」とは、「(-1)*(-1)」のことなのです。 これなら、値は変化しませんね。 要は、値が変化しなければいいので、 =TEXT(A1,"e")*1 =TEXT(A1,"e")/1 =TEXT(A1,"e")+0 =TEXT(A1,"e")-0 のどれでもよく、また数値に変換する関数を使用して、 =VALUE(TEXT(A1,"e")) でもOKです。 ところで、年を出す数式で、 =YEAR(A1)-1988 という回答がありますが、これだと、1989/1/1~1989/1/7も「1」になってしまいます。 (実際は"昭和"64年) なので、不完全な回答だと思いますよ。

minatomo
質問者

お礼

わかりやすく教えて頂いて本当にありがとうございます。初心者の私でも理解できたような気がします。 私のイメージでは  「=TEXT(A1,"e")」は、ただ文字列を引っ張って来た            だけなので、左揃えになる  「=--TEXT(A1,"e")」は計算結果の数値なので、右揃           えになるということですか? …今朝、違うテキストでみなさんの方法を復習したところこんな風になってしまいました。 A1が平成9年7月11日で B1に数式を入力すると なんと明治33年1月9日と結果が出てしまいました。  maruru01さんが教えてくれた「--」を取ると、正確に「9」が表示されます。(ただし、左揃え。) 演算をさせると明治33年1月9日となってしまうんです。 これは、設定の問題だと思うのですが、どのように対処すればよいでしょうか。重ね重ねすみません。 この疑問は急いでいませんので、どなたかお暇なときに教えてください。  

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 年を和暦で抽出する場合は、 =--TEXT(A1,"e") で出来ます。 もちろん、平成だろうが昭和だろうが構いません。 月と日は他の方の通り、 =MONTH(A1) =DAY(A1) でいいと思います。

minatomo
質問者

お礼

ありがとうございました。いろいろなやり方があるのですね。皆さんのやり方をやってみて、とても勉強になりました。ところで、=--TEXT(A1,"e") の「--」って何ですか?意味も知りたくなりました。お暇であれば教えてください。

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.3

エクセルとアクセスでのデータ交換用の変更ですので、表示を変えるだけでは、ダメでしょうね。 B1に「=YEAR(A1)」、C1に「=MONTH(A1)」、D1に「=DAY(A1)」と入力すれば、数値としての値が得られます。 ただし、B1は西暦です。 どうしても年号でなければならないとしたら、 平成生まれの人のみであれば、 「=YEAR(A1)-1988」 昭和生まれの人もいるのであれば、 「=IF(YEAR(A4)>1988,YEAR(A4)-1988,YEAR(A4)-1925)」 というようにしましょう。 大正生まれの人がいる場合などは、IF関数の入れ子を増やせばよいだけなので、ご自分でお考えください。

minatomo
質問者

お礼

ありがとうございました。いろいろなやり方があるのですね。皆さんのやり方をやってみて、とても勉強になりました。「=IF(YEAR(A4)>1988,YEAR(A4)-1988,YEAR(A4)-1925)」 参考になりました。

minatomo
質問者

補足

…今朝、違うテキストでみなさんの方法を復習したところこんな風になってしまいました。 A1が平成9年7月11日で B1に数式を入力すると なんと明治33年1月9日と結果が出てしまいました。  演算をさせると明治33年1月9日となってしまうんです。 これは、設定の問題だと思うのですが、どのように対処すればよいでしょうか。重ね重ねすみません。 この疑問は急いでいませんので、どなたかお暇なときに教えてください。昨日はできたのですが…。

  • moon00
  • ベストアンサー率44% (315/712)
回答No.2

#1さんとは違うやり方で。 表示上ではなく、データとしてその数値が必要な場合。 まず、A列のデータが、「数値」なのか「文字列」なのかで 扱いが変わります。 数値で入っている場合は、「平成9年3月15日」の場合は 上の数式バーに「1997/3/15」という形で出てくると思います。 この場合は、B、C、D列にそれぞれ「=year(A1)」「=month(A1)」 「=day(A1)」と入力すれば取り出せます。 ただし、年だけは西暦となるので、その場合は工夫が必要ですが。 平成しかなければ「=year(A1)-1988」として下さい。 次に文字列で入っている場合は、「年」を取り出す場合 =LEFT(RIGHT($A1,LEN($A1)-FIND("成",$A1)),FIND("年",RIGHT($A1,LEN($A1)-FIND("成",$A1)-1))) となります。 要は年を表す数字が「成」と「年」に挟まれているので、 その位置を探して、取り出しています。 「月」と「日」はこの式をC、D列にコピーして 「月」の場合は「成→年」「年→月」に 「日」の場合は「成→月」「年→日」にして下さい。 多分数値で入っているだろうから、こんな面倒くさいことは しなくて済むと思いますが。(苦笑)

minatomo
質問者

お礼

ありがとうございました。いろいろなやり方があるのですね。皆さんのやり方をやってみて、とても勉強になりました。ラッキーなことに「数値」で入力されていたので悩まなくてすみました。

minatomo
質問者

補足

…今朝、違うテキストでみなさんの方法を復習したところこんな風になってしまいました。 A1が平成9年7月11日で B1に数式を入力すると なんと明治33年1月9日と結果が出てしまいました。  演算をさせると明治33年1月9日となってしまうんです。 これは、設定の問題だと思うのですが、どのように対処すればよいでしょうか。重ね重ねすみません。 この疑問は急いでいませんので、どなたかお暇なときに教えてください。昨日はできたのですが…。

  • noriemon
  • ベストアンサー率35% (5/14)
回答No.1

ええとやり方は他にもあるかもしれませんが、、、 まず、B1,C1,D1のセルに =A1 と入れてみてください。 そして、 B1の"セルの書式設定"→"表示形式"タブを選択し、 "分類"→"ユーザ定義"にし、 "種類(T):"のところに現在[$-411]ggge"年"m"月"d"日" と入力されていると思います。 これを e と入力してください。 すると、サンプルが 9と表示されると思います。 同様に表示形式を C1には m を D1には d を 入力してみてください。 どうですか?

minatomo
質問者

お礼

ありがとうございました。いろいろなやり方があるのですね。皆さんのやり方をやってみて、とても勉強になりました。

minatomo
質問者

補足

…今朝、違うテキストでみなさんの方法を復習したところこんな風になってしまいました。 A1が平成9年7月11日で B1に数式を入力すると なんと明治33年1月9日と結果が出てしまいました。  演算をさせると明治33年1月9日となってしまうんです。 これは、設定の問題だと思うのですが、どのように対処すればよいでしょうか。重ね重ねすみません。 この疑問は急いでいませんので、どなたかお暇なときに教えてください。昨日はできたのですが…。

関連するQ&A

  • 【エクセル2003】 不規則に入力された数字がある列の中で最大のものを探すには?

    いつも、お世話になってます。 シート1とシート2とシート3のそれぞれのセルA1列~A50までに、200以下の数字が不規則に入力されています。 同じ数字はありません。 シート1のB1に3つのシートのA1~A50のセルに入力されているうち、最大の数字を表示させたいのですが、どのような式になりますでしょうか。 よろしくお願いします。

  • エクセルのVLOOKUPのとある式が作れません。。

    シート1 A列    B列    232    昭和23年      51     平成 5年  ←年が一桁の場合、小スペースが入っている シート2 A列    B列   C列 232     1    23 51      2     5  ←小スペースはなく、数字のみ抜き取りたい シート2のA列の数字をシート1のA列から探し出し、シート2のB列は昭和の場合1、平成の場合2と入力される式、シートC列には年数だけ取り出す式をなかなか作ることができません。この場合に、シート2のB列とC列にどのような式を入れておけば、シート2のA列に数字を入力されたときに表示されるのか、教えていただければ非常に助かります。。

  • 【Excel】数字の列を年月日にするユーザー定義

    「20181025」などの数字の列を入力したとき、セルの書式設定のユーザー定義で「2018年10月25日」となるようにすることはできるのでしょうか? もし可能ならばそのユーザー定義の文字列を教えてください。

  • エクセル 生年月日 

    おはようございます。 またまた教えて頂きたいです。 生年月日を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 どのようにしたら、ミスなく入力できるようになるか教えてください。

  • エクセルで1列に入っている数字を抜き出したい

    お世話になります。 エクセルの2003で1列に入っている数字(文字)を別シートで抜き出したいです。 たとえば、 A列 2001 2002 2003 2001 2003 2004 2004 2001  : と、バラバラに長く入っています。 これを別のシートに A列 2001 2002 2003 2004 とまとめたいのです。 個数等は必要ありません。 純粋に入っている数字の種類を飛ばしたいのです。 宜しくお願いいたします。

  • エクセル2000で文字列から数値を抽出したい。

    エクセル2000で文字列から数値を抽出したい。 ワークシートのA列に下記の文字列が入力されています。 A1セル="123456 日本男子 54,321 7,654,321 12,345" A2セル="234567 東京都子 1,234 2,345 5,321" A3セル="345678 大阪太郎 99 689 9,876" データ間はスペースで区切られています。 後方2番目の数値をB列に取出す方法を教えて下さい。 B1セル=7,654,321 B2セル=2,345 B3セル=689 よろしくお願い致します。

  • Excelで数字年月日表示になってしまいます。

    Excelでセルに数字を打ち込み次のセルに移ろうとすると 年月日表示になってしまいます。特に番地を5-22とすると5月22日、または3120-4とするとApr-20などになります。どうしたら良いのでしょうか。

  • エクセルの質問。同じ数字なら違う列の数字を返す

    エクセルについて質問です。 A列は数字が入力されていて、B列はある数字があります。C列にB列と同じような数字を入力していきます。入力したC列の数字が、B列の中にあれば、入力した行にA列の数字をD列に返すことは出来ますか?下記に例を記載します。 A     B     C       D 0   20110210   2010811       1   20110214   20101025   2   20110215   2011111    7 3   20110216   2011322  4   20110217   2011516   6   20110221   2011325   7   2011111    20101220   8   20050223   2011128   宜しくお願いします。

  • エクセルで12ケ月分のシートに年月日を入力したい。

    エクセルで1月~12月までのシートの其々のシートに、セルAに「平成24年」をセルCに「○月」を 入力するにはどうすればよいでしょうか?教えてください。TODAY・MONTH・NOWなどを試しましたが どうしても上手くゆきません。 どうかよろしくお願いします。

  • Excelの表で、行と列の見出しを、そっくりそのまま入れ替えたい。

    Microsoft Excel2000(OS=Win・XP)で表(表の内容は賃金センサスです。)を作成しているのですが、行と列の見出しをそのまま入れ替えて、セルもちゃんと内容に合うように、自動的に入れ替わるような方法って無いでしょうか???もし方法があれば誰か教えて下さい~! (↓表の状態です) ・ワークシートは、入力用・印刷用1・印刷用2の、合計3つがあります。 ・入力用と印刷用1のワークシートは、”行が年齢、列が年度”となっています。 ・印刷用2のワークシートは、”行が年度、列が年齢”となっています。 ・印刷用1のワークシートのセルには、計算式を入れてあり、入力用のワー クシートのセルに入力すると、ある計算をして、自動的に数字が表示され るようにしています。 ・印刷用2のワークシートのセルには、計算式はまだ入れていません。 →印刷用1も2も、列と行が交差するセルの内容は同じだし、どうにか簡単に印刷用2を作成できないかとおもっているのです。

専門家に質問してみよう