• ベストアンサー

Excel関数 グレゴリオ暦

Jun Jul Aug などのの月を示す3文字短縮形の文字列を06 07 08などmm形式に変換する関数はないでしょうか?

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

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

>小生のExcelSheetのAカラムに次のようなものが入っており >-->に変換したいというものです。 >Oct 18 2011 ---> 201110 >Nov 8 2011 -----> 201111  つまり、御質問文にある様な、 >Jun Jul Aug などのの月を示す3文字短縮形の文字列 が入っている訳ではないのですね?  それでしたら、出力先のセルの書式設定を[ユーザー定義]の yyyymm とされた上で、次の関数を入力して下さい。(別Sheetは必要ありません) =IF(ISNUMBER((MID($A1,5,2)&" "&LEFT($A1,3)&" "&RIGHT($A1,4))+0),(MID($A1,5,2)&" "&LEFT($A1,3)&" "&RIGHT($A1,4))+0,"")  尚、元データをシリアル値に変換するのではなく、あくまでも"201110"の様な文字列に変換したいという事でしたら、次の様な関数として下さい。 =IF(ISNUMBER(("1 "&LEFT($A1,3)&" "&RIGHT($A1,4))+0),TEXT("1 "&LEFT($A1,3)&" "&RIGHT($A1,4),"yyyymm"),"")  または、シリアル値や文字列ではなく201110の様な6桁の数値データに変換したいという事でしたら、次の様な関数として下さい。 =IF(ISNUMBER(("1 "&LEFT($A1,3)&" "&RIGHT($A1,4))+0),TEXT("1 "&LEFT($A1,3)&" "&RIGHT($A1,4),"yyyymm")+0,"")

knightworld
質問者

お礼

これです! 末尾の関数をExcelのSheetにコピペして数行コピーしたところ、 A1フィールドにあるJul 05 2012 が B1フィールドで201207 となりました。yyyymmdd(今回の場合はyyyymm)を定義すればいいということですね。 関数の内容は後ほどじっくり読んで理解させていただきます(まだ良く読んで理解するところまでいっていないので。。)が、まずはうまく変換できたことをお知らせいたします。 "Jul 05 2012"とはもともと或海外システムデータをテキスト化したものの、支払日に相当するものです。これを年月に変換していろいろと分析するためのものでした。システムによって日付が区々なので、今回の場合は(グレゴリオというのかな)月の部分が三文字の英文になっているものでした。日本人感覚では yyyy/mm/ddやyyyymmddなど年月日(数値)で捕らえたいというのが一般的かと小生は思っておりますが。。。 ありがとうございました。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2です。 masterシートのA列に入力されているデータがJun01,Jul01などと入力されている場合にJunを01、Julを02などにするにはVLOOKUP関数を使って対応するのがよいでしょう。 masterシートの例えばC1セルにAprと入力してC12セルまでドラッグしてDecまでオートフィルします。 D1セルには1から下方に12までの数値を並べます。 A1セルにJun01と入力されているとしたら単に6を表示させるだけでしたら =VLOOKUP(LEFT(A1,3),C:D,2,FALSE) もしも2012/06/01のように日付として表示させるのでしたら =("2012/"&VLOOKUP(LEFT(A2,3),C:D,2,FALSE)&"/"&RIGHT(A2,2))*1 を入力してセルの表示形式を yyyy/mm/dd のようにすればよいでしょう。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

masterシートにはA列にJan01,Feb02,Oct18,Nov08などの文字列が入力されており、B列にはそれに対応したデータが入力されているとします。 別のシートではA1セルから下方に Oct 18 2011、Nov 8 2011などので日付のデータが並んでいるとします。 B列にmasterシートからのデータを表示させるとしたら次の式をB1セルに入力し下方にドラッグコピーすればよいでしょう。 =IF(COUNTIF(master!A:A,TEXT(A1,"mmmdd"))=0,"",VLOOKUP(TEXT(A1,"mmmdd"),master!A:B,2,FALSE)) ご質問ではmaterシートのA列のデータを変換したいとのことでしょうか?上記の対応でもよいと思いますが。

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

 今仮に、Jun Jul Aug などのの月を示す3文字短縮形の文字列が、例えばA1セルに入力されているものとしますと、次の様な関数は如何でしょうか? =IF(ISNUMBER(TEXT(A1&"-1","mm")+0),TEXT(A1&"-1","mm"),"")

knightworld
質問者

お礼

ありがとうございます。 そのものずばりの関数はないようですね。 小生のExcelSheetのAカラムに次のようなものが入っており -->に変換したいというものです。 Oct 18 2011 ---> 201110 Nov 8 2011 -----> 201111 現状ではさらに別Sheetにmasterを作成し、Vlookupをつかってます。 Mater sheet (01 02は文字列にしてます) Jan 01 Feb 02 Mar 03 Apr 04 =RIGHT(A106,4) & VLOOKUP(LEFT(A106,3),master!$A$1:$B$11,2,FALSE) このmaster方式に該当するようなたとえばgregorio関数なんかがないかなというつもりなのですが、どうもないようですね。