だらけ日記過去ログ:2009年9月18日(金)「明らかにExcel(標準関数)でやる仕事ではない」
意外と使われることの多い「2009年9月18日」といった、「2文字以上の英数は半角表記、1文字のみなら全角表記」という書式。 書くときにそうやって書くのはそんなに大変ではないけど、あとからそれに統一しようと思うと意外とめんどくさい。「1文字のみのとき全角に変換」なんて変換メニューをメモ帳類で見た記憶もないし。ちょっと調べてみると、Excelではやはりユーザー定義関数とか使わないと難しい風。 難しいと言われるとやってみたくなるので、Excel標準の関数だけで(マクロなし)で、こねくりまわしてみた。 まず、セルの文字を200文字ずつに分割(全角に変換する関数が255文字までしか変換できないため)。>全角に変換>1文字ずつに分解し、文字コードに変換>英数の文字コードか判別>隣り合っているか判別>文字コードから文字列に再置換>セルに分かれている文字を結合>200文字ずつに分割されている文字列を結合>出力 …なるほど、これはfor文のないExcelでやる仕事ではない。1000行分作ったら、85MBにもなってしまったし。 でも一応できたので置いとく。1000行用は重すぎるので100行用にした。>Link