カウントアップとは、n=n+1というようなコードです。
これも最初は、何なのか理解できない内容です。
理解するとカンタンなのですが、今回は、カンタンなカウントアップで遊んでみましょう。
目次
カウントアップで遊ぶ
こんにちは。伊川(@naonaoke)です。
最近、競馬のツールに関して、バージョンアップをしています。
それは、少しでも、時間を短縮するためです。
ツール作成時は、標準モジュールも、シートモジュールの区別も知りませんでした。
だから、シートモジュールにどんどん記載していました。
知らないって、怖いですよね。
今回は、バージョンアップ6回目なんです。
規則性のないデータを転記する小技を紹介します。
このブログはこんな人にお勧め
- n=n+1という意味が分からない人
- カウントアップが苦手な人
- VBAを勉強している人
このブログを、読み終わるころには・・・・
変数を使うことが、楽しくなると思います。初心者の頃は、ループで変数を使えるようになると楽しくなりますが、カウントアップが使えるようになるともっと楽しくなります。
規則性のないデータを転記
以前、Do While Loopで、別のシートに転記する方法を紹介しました。
この転記方法は、3行飛ばしとか、4行飛ばし等、規則性がある場合には有効です。
しかし、実務では、そんなに、都合よくデータが整形されていません。
ここで、カウントアップを使います。
規則性のないデータを転記 作業手順 その1 データベース確認
上記のようなデータベースがあります。
例えば、同一シートのJ列へ転記します。
ただ重複もしていますので、重複のないリストを作成します。
ここで、連想配列や、Collectionを使うのはやめましょう。
- C列、D列に文字があったら、C列を、J列に転記
- C列が、空白で、D列に文字があったら、J列へ転記
- D列が、空白で、C列に文字があったら、J列へ転記
特に、順序は、この場合は気にしていないです。
もし、順序が、必要ならば、その時に考えます。
このような場合には、実務なら、作成依頼者に必ず確認しましょう。
それもVBAのスキルです。
規則性のないデータを転記 作業手順 その2 記載するコード
コード自体は、難しくないと思います。
カウントアップの記載場所を間違うと作動しないので、注意しましょう。
規則性のないデータを転記 余談
このカウントアップですが、理解するまでに、私は、時間がかかりました。
永遠に、カウントアップするのではないか?
n=n+1 と記載した場合、ここで、終了と記載しないと、永遠にカウントアップすると思っていました。
しかも、なんの脈略もなく、勝手に変数を決めていいのかと思っていました。
本来ならば、Dim n as Long と記載すべきです。
この場合は、For~Nextのループを抜けると、カウントアップも終了します。
コードの記載ミス
Cells(j, 10) = Cells(j, 1)と記載して、悩んだことがあります。
Jで、統一すると、同時にループが始まるので、上詰めで転記できません。
For~Nextのループと、カウントアップとで、分けることに気が付かないと、ある意味、悪循環のループになります。
その他の疑問は、下記の記事を参照してください。
カウントアップするコードの記載場所がわからない
これは、一概には、言えないので、ケースバイケースとなります。
要するに、慣れるしかありません。
ここがポイント
たかが、カウントアップと思うかもしれませんが、本当に重要な考え方です。ループとカウントアップを理解できると、コードが短くて、簡潔になります。
ぜひ、簡潔なコードをかけるようにしましょう。
まとめ
今回は、カウントアップについて記載しました。
カウントアップは、わからなくはないのです。
モヤモヤしているような感じですかね。
この記事で、モヤモヤ感がスッキリしていただけたらと思います。
今回も最後まで読んでいただき、ありがとうございました。
今回のサンプルファイルは、No225です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。