• ベストアンサー

Excel:文字列から年月日を表示する

例えば、B4に「7月第2土曜日」と表示されていたら、C4に翌年の年月日を表示したいのですがどうすれば年月日を表示できるでしょうか? ただし、途中経過の関数をC4以外に表示させず、C4で全て表示させたいのですが。 Excel2010です。 回答よろしくお願いします。

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

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

>表示結果は正しい年月日が表示されました。 との事ですが、1月第5月曜日~1月第5土曜日等の存在しない年月日の類は確認されたでしょうか?  その他にもB4セルが空欄の場合や、「7月第2土曜日」という形式になっていない値(単なる数値や「abc」の様な意味のない文字列)が入力された際にエラーを出さないようにする事も考えますと、次の様な関数になります。 =IF($B4="","",IF(ISNUMBER(1/(MONTH((YEAR(TODAY())+1&"年"&LEFT($B4,FIND("月",$B4)))+MOD(FIND(SUBSTITUTE(RIGHT($B4,3),"曜日",),"日月火水木金土")-WEEKDAY(YEAR(TODAY())+1&"年"&LEFT($B4,FIND("月",$B4))),7)+7*(MID(LEFT($B4,LEN($B4)-3),FIND("第",$B4)+1,LEN($B4))-1))-LEFT($B4,FIND("月",$B4)-1)=0)/(RIGHT($B4,2)="曜日")),(YEAR(TODAY())+1&"年"&LEFT($B4,FIND("月",$B4)))+MOD(FIND(MID($B4,LEN($B4)-2,1),"日月火水木金土")-WEEKDAY(YEAR(TODAY())+1&"年"&LEFT($B4,FIND("月",$B4))),7)+7*(MID(LEFT($B4,LEN($B4)-3),FIND("第",$B4)+1,1)-1)+0,"該当日無し"))

miya_HN
質問者

お礼

回答ありがとうございます。 >との事ですが、1月第5月曜日~1月第5土曜日等の存在しない年月日の類は確認されたでしょうか? そういえばそうでしたね。 そこまで確認していませんでした。 一つのセルに入力するとなるとこんなに長くなってしまうんですね。 ここまで長くなるとは思いませんでした。 正しい表示結果が出ました。 大変感謝しております。 ありがとうございました。

その他の回答 (2)

  • Chiquilin
  • ベストアンサー率30% (94/305)
回答No.3

まじめに考えるのも面倒くさいのでエラー対策は質問者に任せます。 =LEFT(SUBSTITUTE(A1,"第","01日 "),6)-1-WEEKDAY(LEFT(SUBSTITUTE(A1,"第","01日 "),6)-1-FIND(LEFT(RIGHT(A1,3)),"火水木金土日月"),3) +LEFT(RIGHT(A1,4))*7 > 途中経過の関数をC4以外に表示させず 数式を理解できるなら好きにすればいいと思いますが 何の意味があるんでしょうね。 私なら B4の入力自体を分けます。入力で楽して計算で困るなんてナンセンスです。

miya_HN
質問者

お礼

回答ありがとうございます。 >私なら B4の入力自体を分けます。入力で楽して計算で困るなんてナンセンスです。 なるほど。 確かに言われてみればそうですが。 ありがとうございました。

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

もっとスマートな方法があると思うけど。。。 =DATE(YEAR(TODAY())+1,LEFT(B4,FIND("月",B4)-1),MID(B4,LEN(B4)-3,1)*7+FIND(MID(B4,LEN(B4)-2,1),"日月火水木金土")-MOD(DATE(YEAR(TODAY())+1,LEFT(B4,FIND("月",B4)-1),0),7)-(MOD(DATE(YEAR(TODAY())+1,LEFT(B4,FIND("月",B4)-1),0),7)<FIND(MID(B4,LEN(B4)-2,1),"日月火水木金土"))*7)

miya_HN
質問者

お礼

回答ありがとうございます。 申し訳ありません。 結構長い関数になるんですね。 表示結果は正しい年月日が表示されました。 大変感謝しております。 ありがとうございました。

miya_HN
質問者

補足

最初に回答してくださり、表示結果も正しく表示され、ベストアンサーにしようと思ったのですが、回答No.2の方の回答がより正確な表示結果が出るようなので申し訳ありませんが回答No.2の方の回答をベストアンサーにしようと思います。 ですが、貴重な時間を私の質問のために割いてくれたこと、回答No.2の方の「1月第5月曜日~1月第5土曜日等の存在しない年月日の類の確認」については確認しませんでしたが、回答No.1の方の関数をそのままExcelに入力すると表示結果は正しかったため、回答に対しては非常に感謝しております。 また、面倒な質問をするかもしれませんが気が向いたらでよいのでそのときはよろしくお願いします。 ありがとうございました。

関連するQ&A

  • EXCELで経過年月日を

    EXCELでセルA1に生年月日B1に今日の年月日 セルD1に経過年月日を35/3/24で〔35年3ヶ月と24日)表示したい.関数をお願いします。

  • EXCEL・月日のつもりで入力された文字列(数値)を年月日に変えるには

    A列に月日のつもりで入力された次のような文字列(又は数値)があります。これをB列に年月日に変換表示したいのですがその方法(関数)をご教示ください。(年月日の表示形式は不問。) なお、「年」を意味する文字列がないので、変換する場合、4.1から12.31までは2006年4月1日から同年12月31日まで、1.1から3.31までは2007年の1月1日から3月31日とします。 はじめデータ・区切り位置コマンドを使おうと思ったのですが、コンマの位置が不揃いでうまく行きませんでした。また入力した者が例えば3月1日を意味する文字列(または数値)をあるときは「3.1」あるときは「3.01」のようにまちまちに入力していて、それも作業が面倒な一因となっています。 A     B(変換表示したい年月日「例」) 4.8   2006/4/8 5.03   2006/5/3 7.28    2006/7/28 12.1    2006/12/1 1.07     2007/1/7 2.15    2007/2/15

  • 年月日表示について

    エクセルで、一つのセルの中で、年月日表示を二通りにする事は出来るでしょうか? 例えば、セルの上側には2013年10月12日、下側には平成25年10月12日という具合に なんですが。(文字列表示で全て手打ちする方法意外でなんですが・・・)

  • 1年後の年月日の返し方

    エクセル関数にて、1年後の年月日の出し方を 教えてください。 例えば。。。  セルA1        セルB1 平成15年10月15日 → 平成16年10月15日            (関数設定したいセル) 宜しくお願いしますm(__)m

  • エクセル 文字列のなかの生年月日

    エクセル2003を使用しています。 A1 名前 B1 ふりがな C1 生年月日(yyyy/mm/dd) D1 住所 というデータが右にむかって並んでいます。 E1に A1~D1をすべて結合させたデータを 作りたいのですが・・。 生年月日が数字になってしまいます。 セルの書式設定で日付をなおしても 文字と文字の間に数字が 入り込んでしまっているせいか 解消されません。 どのようにしたら文字と文字の間に入っている 生年月日をyyyy/mm/dd に 表示させることができますでしょうか。 お助けください。

  • 経過年月日 の 関数について

    こんばんは。 お世話になります。 以下の関数で、○年○ケ月○日と言うように、 経過年月日を作りました。 =DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ケ月"&DATEDIF(A1,B1,"MD")&"日" このままエクセルの方に入力しますと、 『0年0ヶ月0日』と言う表記で出てきます。 『0年0ヶ月0日』と言う表記が、出ないような関数に手直ししたいのですが…。 可能でしたら、B1の部分を、 TODAY関数にしたいところでもあります。 長ったらしい関数になってしまうかもしれませんが、 教えていただけたら幸いであります。 よろしくお願い致しますm(__)m

  • Access2013 年月日迄の経過年月日表示

    Access2013で、備忘録作成の為、[年月日] をテーブルに短いテキスト形式で、 例20001205と初めの4桁を西暦、次の2桁を月、後の2桁を日で入力してあります。 『1952年11月27日』から、この年月日迄の、[経過年月日数] を自動的に表示させるクエリのフィールドへの記入式を教えて下さい。宜しくお願いします。

  • ■Excel 1つのセルにある生年月日を分けるにはどうしたら良いですか?

    はじめまして。 Excelで1つのセルにある生年月日を西暦、月、日の3つに分けたいのですが、どのような方法がありますか? (例)「19741218」→→→「1974」「12」「18」 宜しくお願い致します。

  • Excelで生年月日を入力し歳を表示する方法

    エクセルでA1に生年月日(西暦入力)を入力しA2に歳を表示させたいのですが、 また、B1に大正・昭和・平成(T・S・H)年○○月○○日と入力したらB2に西暦表示で ○○○○年○○月○○日と表示したいのですが、このような表示方法があるのでしたら、 是非、知りたいのですが、どなたか知っている方がいましたら教えてください

  • 文字列関数について

    Access 2003等のカードフォームで入力した「生年月日」→S63-08-10を一覧表等で表示する時に「昭和63年08月10日」のように表示させるための文字関数はどのようにすればよいのでしょうか? Sを昭和に表す方法は「@xchg(生年月日,"S","昭和")」はこれで良いと思うのですこの後の記載がわかりません。 詳しい方、これを表示できる文字関数を教えて下さい。よろしくお願いします。

専門家に質問してみよう