バナー

2012年5月16日水曜日

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をかけることで数値になります。

そうやってみると、上手く数値になっていないセルがあって、
それは元の数字の空白の位置がおかしいせいだから、
ちょこっとそこだけ整理して。
最後にソート。

無事解決

0 件のコメント:

コメントを投稿