EXCEL

エクセルがあまり得意じゃない人から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をかけることで数値になります。

 

そうやってみると、上手く数値になっていないセルがあって、

それは元の数字の空白の位置がおかしいせいだから、

ちょこっとそこだけ整理して。

最後にソート。

 

無事解決