『書式が文字列の数字を日付に変換する方法』(ranmal) 文字列で記入した数字を日付に変換することは可能でしょうか? 提出する表の形式としてオープン日の日付2006/9/29は、「20060929」 又は「☆20060929」 と記入しています。 ☆をつけるのは、オープン後1ヶ月未満という意味があるので 省くわけにはいきせん。 月末に集計するために提出した表を元に1ヶ月分を一つのワークシートに貼り付けて 統計をとります。 依頼があった日付がオープン「1年以上」か「一年未満」かを自動で 表示されるようにしたいため下記のようにC列に日付を打ち直して参照させ て表示させています。 C列にB列の文字列を参照させオープン日が表示されるようにしたいのですが・・ C列にオープン日を表示させずに、D列に「1年以上」又は「1年未満」と 表示させることができれば、もっと良いのですが・・      A      B      C    D 1 依頼日   オープン日 2 2006/10/1 20060612  2006/6/12 式=IF(B2>A2,"1年未満店舗","1年以上店舗") Excel関数逆引き辞典などで、日付に関する関数を調べてみましたが、 該当する関数は見当たりませんでした。 宜しくお願いいたします。 [Excel2002][WindowsXP] ---- =IF(DATEDIF(DATE(MID(SUBSTITUTE(B5,"☆",),1,4),MID(SUBSTITUTE(B5,"☆",),5,2),MID(SUBSTITUTE(B5,"☆",),7,2)),A5,"y")>=1,"1年以上","1年未満") でどうでしょう? (Hatch) ---- 関数はHatchさんがご呈示なので、お局宜しく書き込みです。 「提出する表の形式」が決まっているので仕方ないのかもしれませんが たとえば、B列に一列挿入して☆マークがある場合そこへ記入 元のB列はC列に移動するので、そこへ日付で入力して セルの書式設定をユーザー定義で[yyyymmdd]としておけば ☆を外したり、日付に直したりする必要が無くなると思いますが。 ☆を付けるのも自動的に付けられるようになるかもしれませんね。 (HANA) ---- Hatchさん、HANAさん、またまたお世話になりました。 Hatchさんの式でばっちり出来ました。 投稿して間もないのに、こんなすごい式ができるなんて・・すごいです。 早速、明日から使用させていただきたいと思います。 HANAさんのユーザー定義のヒントで、☆を付けて日付を表示させる ことができました。全然思いつきもしなかったです。 集計は私だけでやるのですが、日報は複数の人で作成するので すぐに取り入れるのは難しいですが、徐々に取り入れたいと思います。 Hatchさん、HANAさん、ありがとうございました。 大変勉強になり、仕事もはかどりそうです。 これからもご指導お願いいたします。 (ranmal) ---- >HANAさんのユーザー定義のヒントで、☆を付けて日付を表示させる >ことができました。全然思いつきもしなかったです。 ・・・私も思いつきませんでした。 >☆を付けるのも自動的に付けられるようになるかもしれませんね。 これの意味は 「きっと今は、誰かが目で基準の日付と見比べて必要なら☆を付けながら 文字としてC列に入力しているのだろうけど オープン日付はデータとしてD列に入力する事にして(表示形式はyyyymmdd)、 B列にIF関数で “基準の日付と見比べて一ヶ月未満なら☆を表示” と言う式を作っておけば 該当日付の場合、B列に勝手に☆が表示されるので入力時の手間も 減るかもしれない・・・」 ってつもりでした。 (HANA) ---- なお、上の書込は 「表の形式が変更可能で、基準の日付が何処かに存在する場合」 を想定したものです。 また、「ユーザー定義」を設定して“その様に見える”ものがあったとして エクセル君に「これを探して欲しいんだけど」と頼んだ場合 「そんなのないよ、ユーザー定義でどうなってるかなんて知らないよ」 と言われる事があるので注意して下さい。 ex. 「☆20060929」と入力されている場合「☆20060929」で探せますが 「☆20060929」と入力されている様に見えるが、実はユーザー定義を設定してあり 入力の値が「20060929」の場合、「☆20060929」で探すと“そんなの無い!!” と言われます。エクセルはあくまでも「20060929」と認識しています。 (HANA) ---- HANAさんの貴重な書き込み、今拝見しました。(10/9) 教えていただき、満足してしまったので、確認しませんでした。m(__)m HANAさんの書き込みを、ちゃんと確認していれば 『時間を「昼」「夜」に分ける・・・」で ユーザー定義のセルを探す式を入力して 探してくれない・・なんて悩むことは 無かったんですね。 改めて良く理解出来ました。ありがとうございます。 これからは、質問したところは必ず、満足した後でも何度も確認するように したいと思います。 (ranmal) ---- こちらへ誘導しておきながら、文章の訂正・・・。 >また、「ユーザー定義」を設定して“その様に見える”ものがあったとして この辺り。(その後もですが) 「ユーザー定義」であることが問題のように感じられますが、そうではなく 「表示形式で変更されている」事が問題です。 上の文章の「ユーザー定義を設定」は「表示形式で変更」に読み変えて下さい。 まぁ、「見た目によるユーザの認識」と「エクセル君の認識」は 結構違ったりするので注意が必要です。 ex.「表示形式」と話はずれますが IF(条件,"",・・・) と言う式を入れて於いて、""が選ばれている場合 「見た目」ではそのセルは「ブランク」ですが 「エクセル君」は「文字が入っている」と認識しています。 >これからは、質問したところは必ず、満足した後でも何度も確認するように >したいと思います。 打てば響くように思いつけばよいのですが、なかなかそうも行かず・・・。 一覧から流れて無くなる位までは 「最後に見た時よりスレが上がってないかな?」 程度で確認していただけると嬉しく思います。 (HANA) ----    A    B    C    D 1 依頼日     オープン日 2 2006/10/1 ☆ 20060612  2006/6/12    B列 ☆マーク列とす =IF(DATEDIF(DATE(left(c1,4),MID(5,2),right(A1,2),A5,"y")>=1,A1,"y")>=1, "1年以上","1年未満") (macth) ---- HANAさん了解しました。このサイトを知ってから1週間足らずですが、 大変勉強になり、また助けていただいています。そして驚いています。 HANAさんを始め、みなさん、すごいです。 あきらめていたことを 次々と解決してくれて・・ 少しずつ他の人の質問も見ながら勉強していこうと思っているところです。 macthさん、ありがとうございます。色々な方法を知ることができて嬉しいです。 試してみましたが、「数式に対して、少なすぎる引数が入力されています」という エラーが出てしまいます。でも、他の質問(昼・夜を分ける方法)で 教えていただいた式を試したら、エラーが出てしまい「出来ません」と返事をした後 何日か後で試してみたら、出来た事があるので、また、わたしのやり方が悪いのかも 知れません。 あと、☆マークは別のセルに分けて入力することはできないという制限が あるので、「1つのセル内に星がある場合と無い場合がある」が条件になって まいます。説明のしかたが下手ですみません・・。 ---- (Hatch)さんと(macth)さんの式を並べて比べてみて下さい。 何処かが違って上手く計算が出来ていません。 使われている式の意味や書き方を調べて、括弧の位置を確認しながら 分解しながら見比べるとどこがおかしくてエラーが出ているのか 分かるかもしれませんよ。 (HANA) ---- HANAさんのヒントで分かりました。 =IF(DATEDIF(DATE(LEFT(C1,4),MID(C1,5,2),RIGHT(C1,2)),A1,"y")>=1, "1年以上","1年未満") これで出来ました。 参照するセルの一部変更とセル参照をプラス あとは、カッコを足して出来ました。 どこが違うのか、考えながらやっていたら、式の意味もよく理解できて とても勉強になりました。良かった〜。嬉しいですっ! (ranmal) ---- (追記) 別の資料でですが、Accessにエクスポートするために文字列の 日付(日付に見えるけど文字)を日付にしなければならなかったのですが、 ここでの、Hatchさん、HANAさん、macthさんの回答を元に 一括して日付に変換することが、できました。 ありがとうございました。 (ranmal) ---- 「日付に見える文字列」を「日付」に変換するには [[20050207155239]]『日付の変換』(szsh_pages) [[20030514005219]]『日付の表示方法』(たくちん) こんな方法もありますよ。 (HANA) ---- 色々な方法があるのですね。 参考になりました。状況に応じて使い分けできそうです。 ありがとうございます。 (ranmal)