May 11, 2018

Excel VBA の高速化のポイント

 転職してから業務の様々な場面でExcel VBAを用いることが増えました。世間でもRPA等といった初歩的な自動化/効率化は非常に注目を集めていますが、そんな大仰なものを用いなくてもVBAでやりたいことの多くは実現できます。  このVBA、言語仕様はもはや古いというレベルではないですし、実行速度も極めて遅いです。しかし、わざわざ開発環境を自分で整える必要もなく、何よりも多くの方に馴染み深いアプリケーションでプログラミングをたやすく実現できるという強みがあります。何でもかんでもExcelで実装し、Accessで処理すべきデータの管理/処理まで無理やりExcelにやらせている人が多かったりするのは否めませんが、マクロ付きファイルを頒布する際等にはやはり「Excelのファイルである」ということは有利です(すべての頒布先がAccessを利用している状況は稀でしょう。しかし、Excelにその心配がいるでしょうか?)。また、マクロの記録機能を用いれば初学者でも何となく動かしてみることはできますよね。さらに、記述した内容を簡単に視認できるというのは、修養のための環境としてはもってこいだったりするのです。  それでもいつも付きまとうのは「実行速度の遅さ」。特に、数十万レコードといった大量のデータをExcelで処理しなければならないときなど特に、適切でないコーディングが処理時間を大幅に膨らませてしまう恐れがあります。  網羅的な記述は目指せませんが、思いつく限りのポイントを挙げてみました。ご指摘やご意見頂戴できると幸いです。 参照を渡してプロシージャ内からオブジェクトにアクセスするのと、グローバルオブジェクトへアクセスするのとの間で速度差はほとんどない Boolean型変数の判定は「=True」「=False」よりも「」「Not」の方が早い 文字列型変数A、Bの比較は「A=B」「A<>B」よりも「A...

Apr 23, 2018

自省録 - マルクス・アウレーリウス

自省録 - マルクス・アウレーリウス 特筆すべきは、たとえば雄弁とか、法律、倫理、その他の事柄に関する知識など、なにかの点で当別の才能を持った人びとにたいしては、妬みもせずにゆずったこと。それのみか彼らを熱心に後援して、各々がその独特の優れた点に応じて名誉をうるようにはからったのであった。(第1巻一六) 思い起せ、君はどれほど前からこれらのことを延期しているか、また行く度神々から機会を与えて頂いておきながらこれを利用しなかったか。しかし今こそ自覚しなくてはならない、君がいかなる宇宙の一部分であるか、その宇宙のいかなる支配者の放射物であるかということを。そして君には一定のときの制限が加えられており、その時を用いて心に光明をとり入れないなら、...

トニオ・クレエゲル - トオマス・マン

トニオ・クレエゲル - トオマス・マン 打ち明けていえば、トニオはハンス・ハンゼンを愛していて、すでに多くの悩みを彼のためになめて来たのである。最も多く愛する者は、常に敗者であり、常に悩まねばならぬ──この素朴でしかも切ない教えを、彼の十四歳の魂は、もはや人生から受け取っていた。そして彼の性質として、こうした経験をよく覚え込んで──いわば心に書き留めておいて、そのうえ多少それを楽しんでいるのだった。  しかしそれでも彼は幸福だった。なぜなら幸福とは──と彼は胸の中で言った──愛せられることではない。愛せられるというのは、嫌厭の念と入りまざった、虚栄心の満足である。幸福...

Mar 20, 2017

Teenage Fanclub Japan Tour 2017 Mar 4 : Tokyo Ex Theater Roppongi

 ついに…あの世界最高のバンドのライブを観ることができました!  ご存知スコットランドはグラスゴーの雄!そう、Teenage Fanclub です。  初めて Bandwagonesque を聞いたのが中2の頃だったので、16~17年憧れ続けたことになるなー。。とにかく A Catholic Education と Bandwagonesque 、Thirteen 、Grand Prix 、Songs from Northern Britain は聴きまくった。高校の通学時とか特にiPodでエンドレスリピート。恋愛、部活、大運動会、文化祭、恋愛。あの頃はいろいろ輝いてたなー…!  つまり、TFC...

Sep 20, 2016

Kinesis Advantage2 - Smart Set Programming1 -

(書きかけで網羅的な説明は全然できていませんが、「Advantage2が動かなくなった!何か方法を知りませんか!?」という問い合わせをいただきましたので、トラブル解消法だけでも載せようと思って。。)  Kinesis Advantage2 には2MBのOnboardメモリが搭載されており、自分の好みに合わせてキーをリマップしたりマクロを記憶させること等が可能です。Kinesisはそれらの機能を総称して”Smart Set Programming”と銘打ち、Advantage2の目玉として打ち出しています。また、これを快適に実現するために、以前から課題と言われていたファンクションキー群をメカニカルスイッチ化しています。  Advantage2が手元に届いてからすぐに様々な機能を試してみてそれなりにその便利さを実感しましたが、(私の早とちり等から)いくつかの問題に直面したので、機能の概説と合わせて対処法を簡単に記しておこうと思います。基本的な箇所は前回のエントリにまとめているので、それも併せて参照していただければ。。ちなみに私の操作環境はWindows...