Excel VBAとは
Visual Basic for Applications
の略称で、Application(応用ソフト)用のVB(プログラミング言語)のことで、主に人間が手作業で行っている操作を機械任せに(自動化)するための機能です。
※本格的な用語を使用した解説を望む人はWikipedia先生にでも聞いてください。
例えば、Excel2003で「1〜10000行目までのA列かB列にはデータが入力されており、A/B列を1行毎に結合する」という操作。これを生真面目に手動で実行してしまうと、たぶん途中で泣きたくなってくると思います。
題材はこんな感じ。
個々のセルにはデータが入力されているので結合したセルをコピペするのはデータが上書きされるのでNGです。結合セルをコピーし書式貼り付けも良さそうに見えますが、何気にB列のデータが消滅します。
今(Excel2007以上)でこそ便利な機能ができ、これを一瞬で解消することができるようになりましたが、Excel2003ではどうしましょう。。。
そうです。こんな時にこそVBAなのです。
Sub 行ごとに結合()
Selection.Merge True
End Sub
A1からB10000を選択し上のプログラムを実行するだけで、泣きたくなる作業から一瞬にして開放されます。たった3行書けるだけで、このように大幅な時間短縮が出来るのですから知らなきゃ損です。
ズバッと解決!
他にもより複雑な処理を自動化させたり、独自の計算を行う関数を用意したりと、このように「元々エクセルが持っている機能がこうなればもっと便利なのに」を実現する手段がエクセルVBAです。
※元々〜の件は「レベル2.0的に簡単に述べると」です。細かい所は突かないでください。
ただ。元々エクセルが持っている機能を知らなくては、より遠回りをすることもあります。今回の例では、全くVBAの知識がない人が上のプログラムを実行できるところまで漕ぎ着けるには、「VBE」「モジュール」「VBAの操作」などを学習する必要があります。
しかしそれ以前にエクセルの基礎があれば
空いている列を利用する方法
1. | お隣のセルが空いているので、セルC1に「=IF(A1<>"",A1,B1)」を入力。 |
2. | これを10000行までオートフィルでコピー。 |
3. | コピー後の選択状態のまま、さらにコピーボタンをクリック。 |
4. | さらにお隣のD列も空いているので、セルD1をクリックし値貼り付け。 |
5. | 結合したセルの書式が欲しいので、空いているセルF1とG1を結合する。 |
6. | 結合したセルを選択状態のまま書式のコピーボタンをクリック。 |
7. | 値貼り付けをしたD1〜D10000をドラッグし書式を貼り付け |
8. | これをA列にコピペすれば解決(結合で中央揃えになっているので左に戻す) |
9. | 作業列のC〜G列が汚いので、選択して列削除でお掃除 |
だいぶ長々となりましたが、実際の操作時間はそれほどでもないと思います。必要な知識としても難しいのはIF関数ぐらいで、「オートフィル」や「コピーアンドペースト」、「値貼り付け」に「結合」と「書式のコピー貼り付け」は基礎知識でしょう。
書式のコピー貼り付けボタンをダブルクリック、広範囲選択のCtrl+Shift+矢印キーまで知っていれば、尚ヨシです。
横道に逸れてしまいました。要は元になる土台がなければ高みを望むことはできない、本サイトは初心者を脱出する為の応用サイトです。基礎有りきで話を進めますので、「関数」が食べ物だと思ってしまう方はお引き取りください。
最後にExcel以外のWordやAccessにもそれぞれにVBAが存在します。各オフィスソフトでの操作対象や命令が異なるので全く同じにプログラムできるものではありません。本サイトでは主に「エクセルVBA」を扱っていきます。