• ベストアンサー

EXCELの数値から年月への変換

kagakusukiの回答

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

 変換前の数値が入力されているセルが例えばA1セルであった場合には、変換後の日付を出力するセルに対して、セルの書式設定の表示形式を[ユーザー定義]の yyyy"年"mm"月" に設定した上で、次の様な関数を入力されると良いと思います。 =IF($A1="","",IFERROR(TEXT(SUBSTITUTE(IF(LEFT(CELL("format",$A1),1)="F",TEXT($A1,"0."&REPT(0,MID(CELL("format",$A1),2,2))),$A1&""),".","/"),"yyyy年mm月")+0,"変換不能"))

charlie3333
質問者

お礼

回答ありがとうございました。 ご提示いただいた数式で希望通りの変換ができる様です。 数式の内容を理解できる様に詳しく見てみたいと思います。

関連するQ&A

  • エクセルの日付書式を文字書式に変換

    エクセルで日付書式yyyy.mm.dd(例)を文字に直すと88418(例)になってしまいます。 やりたいことは日付で入力したものを文字書式に直し別シートに貼り付けたいのですがうまくいきません。 いい方法お教えていただけませんでしょうか。よろしくお願いします。

  • EXCEL 日付の入力形式

    こんにちは。 日付が、dd/mm/yyyyの形式で入力されたデータをもらいました。 関数を利用したいのでEXCELに日付として認識させたいのですが、 セルの書式設定で設定してもだめなようです。 質問 1)yyyy/mm/ddの形式で入力されていないと日付として認識されないのでしょうか? 2)現在の形式のまま、日付として認識させる方法はありますか? 3)dd/mm/yyyyをyyyy/mm/ddに変換する方法はありますか? 以上、よろしくお願いします。

  • エクセルでの日付の数値変換

    エクセルで8ケタ構成の日付(例20140101)を入力しているのですが#########という表示になってしまいます。他シートの日付データとVLOOKUPをしたいので数値に変換したいのですが方法をご教示頂けませんでしょうか。講師の方に教わっていただいているときに「▽マークが出てくるのでそこから数値に変換を選んでください」というようなことを言われたのですがどうすれば▽マークが出てくるのか分からずにいます。お手数ですが宜しくお願い致します。

  • Excel VBA で日付を4ケタの数値に変換させるには?

    ある日付データを 『月』と『日付』のみの4ケタの"文字列"にさせて表示処理させたいのですが、困っております。 現在、VBAを使用しないで処理させると…こんな感じで困っています。 1.日付を yyyy/mm/dd 表示 2.編集~ 『/』のみを全て『0』に変換 3.RIGHT関数で4ケタ(または5ケタ)抜き取る *データ* 日付    yyyy/mm/dd  変換      RIGHT(4ケタ) 1月5日  2005/1/5     20050105   0105 1月10日  2005/1/10    200501010   0110  ・    ・  ・    ・ ▲不具合状況 1."1月10日" のように日付が2ケタになる日は "1010" のように表示がずれる。RIGHT(○,5) で対処する方法もあるが…効率があまり良くない。 2."yyyy/mm/dd" のデータを直で "RIGHT( )" で処理させると思ったとおりの値が戻ってこない。 yyyy/mm/dd      RIGHT() 2005/1/5    →   8537 …変な値が戻ってくる? VBAで一気にやる方法ありますでしょうか? お知恵を拝借ください!

  • Excelでセルの表示形式を「yyyy年mm月」から「yyyy/mm/dd」へ

    エクセルで数式をあてはめて6ヶ月後の日にちを「yyyy年mm月」形式で出しているセルがあります。その該当月に作業をしたら、作業日をセルに上書きで入力するのですが、手入力によって「yyyy/mm/dd」形式で入れたいのです。 今、セルの表示形式が「yyyy年mm月」なので、手入力で入れても「yyyy年mm月」としかならず、「yyyy/mm/dd」にするためにセルの書式設定→表示形式の変更を行っている状態です。「yyyy年mm月」形式を解除したいのですが、Delボタンでは入力された数値しかクリアーされず、形式は残ってしまいます。「yyyy年mm月」を解除して「標準」または「yyyy/mm/dd」にもっていく簡単な方法はありますでしょうか?

  • Excelの数値読み替え

    Excelで数値で入力されている日付を日付データに読み替えたいのですが、方法がわからず困っています。教えて下さい。 現在 : 20021018というように数値で入力されてしまっている。 変換 : 2002/10/18のように日付として認識させたい。 宜しくお願いします。

  • Excelが勝手に変換する書式を変えたい

    Excelのおせっかい機能を働かせなくする方法、もしくは働くにしても自分が意図する書式に変えてくれるように変更する事はできるのであれば、方法を教えていただきたいと思います。 例えば、セル内で"09/01"と入力すると、そのように表示させたいにも関わらず、勝手に"9月1日"と変えられてしまいます。 気を利かせたつもりの機能なのでしょうが、正直言って「おせっかい」です。 そう思われる方も、特に使い込む方に、多くいらっしゃるのではないでしょうか? ・おせっかい機能を働かせなくする方法 (全セルの書式を文字列にしてしまうと、計算ができなくなるのでダメですね。) ・おせっかい書式変換を意図する書式にさせる方法 例えば、"yyyy/mm/dd"、"mm/dd"、"[hh]:mm"など、桁が揃って見やすい・誤解の少ない表記に統一したいのですが、そういったニーズは一般的でないのでしょうか? いずれかで私のニーズは解決するかと思いますが、どなたかお知恵を貸してください。宜しくお願いします。

  • 年月だけの入力って出来ますか?

    AC2000/WIN2000です。 年月だけの入力をしたいんですが出来ないので教えて下さい。 プロパティの書式に、 『yy\年mm\月』としてあるので 表示は年月だけです。 ただ、実際は 2/4/1のつもりで2/4と入力すると、 2/2/4と認識してしまうのです。 例えば2/4と入力したら 2が年、4が月、日が全て1日になるようには出来ませんか? 宜しくお願いします。

  • エクセルの日付表記に関して(書式の強制化

    エクセル(2003)で日付を入力すると勝手に書式が決まってしまい困ってます。 セルに 11/24/09(09年11月24日) と入力するとこのままの状態で打ち込めるのですが 11/9/09(09年11月09日)と入力すると2011/9/9に強制的に変換されてしまい書式も変更されてしまいます。 日付の部分が一桁の日(1日~9日)だとエクセルの方が月だと勝手に 判断してこのような強制変換をしているようなのですがこれを させない方法?はありますでしょうか。

  • 日付や時刻の"01"を" 1"に変換したいです。

    下記のような問題で悩んでいます。何かよいアイディアがありましたら教えて下さい。 【要件】 ・SimpleDateFormatで指定された書式の文字列にした後、年月日時分秒ミリ秒の"01"~"09"を" 1"~" 9"のように前0を半角スペースに一括変換したい(年は書式がyy形式の場合のみ)。 ・SimpleDateFormatへの書式はエラーが起きない限りどんなものでも受け入れる(通常、書くわけがない書式についても)。 例) "yyyy/MM/dd HH:mm:ss:SSS" "'yyyy/MM/dd HH:mm:ss:SSS形式:'yyyy/MM/dd HH:mm:ss:SSS"  ※''の中にあるMMはテキストなので英字のまま。 "yyyy/MMMMMMMMMMMMMMMMMMMM/dd HH:mm:ss:SSS"  ※Mの数は不明 "yyyy/MM/dd MM MM HH:mm:ss:SSS"  ※月の表示指定が複数 引数 :日付(yyyyMMddHHmmssSSS形式), SimpleDateFormatへの書式 戻り値:SimpleDateFormatで変換後に"01"~"09"を" 1"~" 9"にした文字列 自分なりの検討案としては下記になります。 a.引数の書式をそのままSimpleDateFormatに引き渡ずに、一部修正してから呼び出す。 例)"yyyy/MM/dd HH:mm:ss:SSS"→yyyy/_M/_d _H:_m:_s:__S" ※"_"は半角スペースです。 実際はMやdなどが2桁になる場合は変換しません。 かなりごりごり200行ぐらい試しに書いたのですが、対応できないケースが出てきてその都度エンドレス状態です。 ちょっとこのまま実装するわけにいきません。いつバグがでるか・・・。 b.SimpleDateFormatで変換後に年月日時分秒ミリ秒に該当する箇所に"01"~"09"があったら置換する。  引数の書式からMMやddのindexを保持して、SimpleDateFormatで変換後の該当indexに置換。 例) 書式:"yyyy/MM/dd_HH:mm:ss:SSS" 日付:"20090101010101001" "2009/01/01_01:01:01:001"→"2009/_1/_1__1:_1:_1:__1" ※"_"は半角スペースです。 但し前提として、書式とSimpleDateFormatで変換後の文字列が1対1になっている必要があります。 単純な例ですと 書式:"yyyy/MMMM/dd HH:mm:ss:SSS" 書式のddは11~12桁目ですが、SimpleDateFormatで変換後は下記のようにインデックスがずれます。 "2009/1月/01 01:01:01:001" "2009/12月/01 01:01:01:001" もしかしたら下記のような感じで吸収できるのかもしれませんが、ちょっと個人的に出来そうに思えませんでした。 月が1桁 かつ 書式が"M"の場合 月が1桁 かつ 書式が"MM"の場合 月が1桁 かつ 書式が"MMM"の場合 月が1桁 かつ 書式が"MMMM"の場合 月が1桁 かつ 書式が"Mxn"の場合 月が2桁 かつ 書式が"M"の場合 月が2桁 かつ 書式が"MM"の場合 月が2桁 かつ 書式が"MMM"の場合 月が2桁 かつ 書式が"MMMM"の場合 月が2桁 かつ 書式が"Mxn"の場合 ここ1,2週間ほど煮詰まっています。どなたかアドバイス頂けると助かります。 自分的なネックは書式が限りなくフリー形式なところです。

    • ベストアンサー
    • Java