今週のお題「手づくり」
ExcelVBA(Visual Basic for Application)も、長くやってると、いろんなことが出来るようになります。
もちろん、大がかりなプログラムも作りますが、ちょっとしたニーズにも、ちょちょっとプログラムを書いて、便利に処理出来ることがありますね。
関数で出来れば、関数でしますけどね。
でも、判断を伴う場合や、セルを書き換えたり、行や列を操作するような処理は、関数では出来なかったり、面倒になったりすることが、多いです。
例えば、データが重複している場合、1つを残して行ごと削除したい場合、10行ちょっとのマクロを組めば、実現できます。
まずは、比べる列で、並べ替えます。
これは、手動の方が楽かも知れません。
プログラムでは、処理中の行を表す変数を用意して、比べる列の、その行の値と、その次の行の値を比べて、一致すれば次行を行ごと削除、不一致なら飛ばして、変数を1足す、という処理を、「Do Loop」で繰り返せばいいわけです。
最近使ったのは、3列にまたがった住所の、一本化。
「都道府県」「市区町村」「町名以降」というパターンです。
関数でも出来ますが、別に1列用意して、関数を書き、「形式を選択して貼り付け」で、値化する必要がありますね。
マクロだと、「都道府県」の列に追記が可能です。
いつも使っている、資料作成ツールでも、道具的に使っているプログラムがあります。
今まで何回か書いてるのは、支店所重用のファイルを、一括で書き換えるプログラム。
支店所長が使うファイルは、80以上もあります。
なので、途中で仕様が変わったり、不具合で修正しなければならない場合、直すのは非常に大変!
修正ミスもあり得るので、正直、完遂出来る自信はありません。
そこで、自作の修正用プログラムに、どこをどう直すか、マクロで書いて、実行!
あとは、プログラムがファイルを自動で開け、処理を施して、保護をかけて閉じる、という動作を、ファイル分繰り返します。
マクロで書くので、数式や罫線もいじれますし、入力規則、条件付き書式なども、変更が可能です。
とにかく、「正確」なのがいいですね。
何十回も同じことを繰り返すのは、パソコンが得意で、人間には難しい作業の一つです。
フォルダ単位なので、テストファイルで動作を試すことも可能。
最後には、雛形ファイルも同じように、修正できます。
今まで、何度も危機を救ってくれたツールですね。
非常に使える道具です。
他にも、全ファイルが「開いているか?」どうかだけを、確かめるプログラムとか。
各ファイルを、追記モードで開くのを試行するプログラムで、数秒で結果が出ます。
こちらもメンテナンスなどで、支店所長のファイルを操作しますが、もしファイルが開いてると、上書き保存出来ないので、処理出来ません。
プログラムが途中で止まり、中途半端な処理に終わり、非常にマズい状態になります。
ファイルが開いているのがわかれば、未然に防げるわけです。
年度の替わり目には、新しいファイルツリーを作るプログラムもあります。
前はファイルをコピーして、支点署名などを書き換えて使っていましたが、次第に他にも独自のデータを書く必要が出てきたので、人力ではとても無理になり。
プログラム化しました。
雛形ファイルを必要分コピーして、必要なデータを書き込み、各支店所のファイルに仕立てます。
さらに、前年のデータを引き継ぐプログラムもあります。
同じ支店所のファイルをマッチングして、データを転写します。
支点所長のニーズに応じて、開発しました。
まさに「道具感覚」で、処理プログラムを自作して、使っているわけです。
手作りで!
職人さんは、必要な道具を自作すると言いますが、正しくその感覚ですね。
必要に迫られて、必要な仕様で作るわけですから、精度は高いですよ。
形は見えないですが、Excelでいろんな処理を実現する、手作りの道具が、毎日のように活躍してくれています♪