エクセルがあまり得意じゃない人からHELPが来た。
この表を日にちごとに並べ変えるにはどうしたらいいの?と
見たらセルの中に
5月20日(日)とか12月 3日(月)とか並んでました(絶句)
エクセルは賢いからこれでも強引にソートをかけると
ある程度は並び変えてくれるけど
このままでは文字列なので、
エクセルでの数式処理は難しいのだ。
エクセルで扱う日付けは
一見文字のように見えて
実は1900年の1月1日からその日が何日目かという数字だ。
例えば本日2012年5月16日は41045になる。
だからこそ、前後で並び替えたり
足したり、引いたりできるのだ。
さて、この場合の文字を数値にするための問題点は
・後ろに曜日が付いている。
・エクセルの日付の数字は半角。2月ではなく2月である。
しかも、10月と5月の「月」を揃えるために、
5月の頭に空白を入れたりしてるので余計始末が悪い。
全部入力しなおし!が最速であるのは承知の上で処理してみた。
まず月の数字を取りだすために
LEFT(当該セル,FIND("月”,当該セル)-1)
人間の言葉に直すと、
そのセルの中の月って言葉を探して、
月って文字から左に位置する部分の文字を取り出しなさい、てこと
ここまでで5月20日(日)からは、5←ただし全角が抽出されます。
その上で全体にASC関数をかけて全角を半角文字にします。
次に日付の数字を取り出すのにMID(当該セル,FIND(”月”,当該セル)+1,2)
これも同じく月って言葉を探して、
月って文字から後ろの文字を2つ取り出せってこと
(もちろん日の前2つでもいいんだけど、入力した人の空白の入れ方で
こっちの方がまだ正確に取り出せるという判断)
これもASC関数で半角にする。
で、この2つを&ではさんで間に / を入れると
5月20日(日)→5/20になります。
ちなみに曜日は別セルに
RIGTH(当該セル,3)で右から3文字抜き出しで表示
ただ、これだとまだ「文字列」なんですよ、
だから左詰めで表示されてます。
なので隣に空白セルを作ってそこに1と入力して、そのセルをコピー
で、さっきの5/20とあるセルを選択して、
形式を選択して貼り付けで「乗算」を選ぶと、
文字に1をかけることで数値になります。
そうやってみると、上手く数値になっていないセルがあって、
それは元の数字の空白の位置がおかしいせいだから、
ちょこっとそこだけ整理して。
最後にソート。
無事解決