• ベストアンサー

エクセルの並び替え?オートフィルター?

エクセルで、登録日を今を基準として5年未満、5年以上10年未満、10年以上15年未満たっているものなどと振り分けたいとき、例えばひとつのセルに文字列として87.02.01、以下下方向に90.06.03、85.06.04、97.04.08、00.11.5、04.06.08・・・とランダムに西暦・年・月・日が入力されている場合、どうしたらよいでしょうか? 単純に並べ替えをして小~大にはしましたが、そのあとオートフィルターで条件を設定すればいいのか、そのやり方がわかりません。 また、関数を使った方法もあるでしょうか?よろしくお願いいたします。

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

  • ベストアンサー
  • Miusuke
  • ベストアンサー率20% (5/25)
回答No.2

簡単な関数の組み合わせをしてはどうですか? (1)C1セルに、本日を表示 (2)D1セルに、本日より5年前を表示 (3)E1セルに、本日より10年前を表示 (4)F1セルに、本日より15年前を表示 (5)(A列に日付があるとして)  B列にIf文を入力。  もし、Aのセルが(2)よりもおおきかったら”5年未満”  もし、Aのセルが(3)よりもおおきかったら ”10年未満”  もし、Aのセルが(4)よりも大きかったら”15年未満”  どれでもなかったら”15年以上”                     と表示する。 (6)B列でオートフィルターをかける。 そうすれば、5年年未満を表示させたければ”5年未満”を選択するのみでOKではないでしょうか? 沢山セルを使ってしまいますが、一つのセルに入力するよりは関数が簡単かなぁと。。。。 C列-1 =today D列-1 =DATE(YEAR(C1)-5,MONTH(C1),DAY(C1)) E列-1 =DATE(YEAR(C1)-10,MONTH(C1),DAY(C1)) F列-1 =DATE(YEAR(C1)-15,MONTH(C1),DAY(C1)) A列     B列 2000/1/1   =IF(A1>$D$1,"5年未満",IF(A1>$E$1,"10年未満",IF(A1>$F$1,"15年未満","15年以上")))  2005/5/5   =IF(A2>$D$1,"5年未満",IF(A2>$E$1,"10年未満",IF(A2>$F$1,"15年未満","15年以上"))) 2004/3/3   =IF(A3>$D$1,"5年未満",IF(A3>$E$1,"10年未満",IF(A3>$F$1,"15年未満","15年以上")))

noname#68583
質問者

補足

ありがとうございます。教えていただいたように、B列にIF関数をいれてみました。、もともとA列が87.02.01という文字列のまますべて入力されていて、それだとうまく式が反映されず、A列を1987/2/1と入力し直すと反映されました。これでユーザー設定で表示形式を87.02.01とでるようにすればいいようなのですが、やはりA列の日付を全部入力し直さないといけないのでしょうか?

その他の回答 (2)

  • Miusuke
  • ベストアンサー率20% (5/25)
回答No.3

ちゃんとできるか分からないですが、 入力されている列を選択して、編集→置換で、 『.』→『/』というふうに、全て置換にしてみたら直りませんか? 多分、87.02.01→1987/2/1になると思いますヨ(^-^)v

noname#68583
質問者

お礼

ありがとうございました!これですべて直って、式もちゃんと反映されました。。。

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

A列に上記のデータがあるとして B2=FLOOR(DATEDIF(DATEVALUE(SUBSTITUTE(IF(LEFT(A2,2)*1>30,"19","20")&A2,".","/")),TODAY(),"y"),5) としてB列をオートフィルターなどで区分けする。 B列の数値は 0 :5年未満 5 :5年以上10年未満 10:10年以上15年未満 になります

noname#68583
質問者

お礼

ありがとうございます。挑戦してみたのですが関数初心者で‥ もう少し簡単にできる方法はないでしょうか?

関連するQ&A