<この記事は、ノンプログラマーの方を対象としています>
ノンプログラマーの人で、「RPAって、どうやってロボットを作成しているのだろう?」という疑問を解決することを目的としています。
「RPAツールとは何か?」と言われれば、「コーディングを代行してくれるツール」という答え方も出来ます。
ですので、ロボット作成の考え方は、一般のプログラミングと同じ部分が多いのです。
そのため、プログラミング経験者の方が読まれても、あまり得るものがないかもしれませんので、悪しからず。
RPAで自動化を行う際に、マイクロソフトの『Excel』を使う機会はとても多いです。
RPAツールによっては、Excelで使えるパーツを沢山持っているものもあれば、あまり持っていないRPAツールもあります。
持っていない場合、Excel側の機能、つまりマクロや関数を多少なりとも利用しなくてはいけない状況はよく起こりえます。(持っている場合でも、必要になることはありますし、より簡単にロボットが作れたりします。)
それはさておき、RPAのロボット作成において、Excelを使う多くの場合は、「転記」がメインになることが多いと思います。
<Excelを使った例>
・売上元帳に書かれているデータを元に、社内のデータベースに転記
・元帳のデータを元に、請求書のひな型に転記
・事前に作成されたピボットテーブルに入力して、その計算結果を他システムに転記
これらは一例ですが、Excelはとても沢山のことが出来ますから、RPAを習得する中で自然とExcelの操作方法にも詳しくなったという人は少なくないと思います。
さて、本題。
Excelと最終行の認識方法
とても初歩的なことですが、
『RPAにおいて、どうやってExcelシートの最終行を認識させるのだろうか?』
これ、疑問に思いませんでしたか?
少なくとも、私は当時、不思議に思っていました。
ちなみに、答えはいくつかあります。
どれが正しいのか?と言われると、「どれでもOKです!」というケースもあれば、「これがベストです!」というケースもあります。
基本は「処理速度」が重視されるケースが多いですね。
①(上から)順番に読み込んでいき、「空白」セルに当たったら、その1つ前を最終行として認識させる。
例えば、5行目のセルが「空白」だった場合、変数(※1)には「5」という数字が入っています。
※1・・・「変数」とは、出し入れできる箱のようなもので、メモリ上に保持しておくことが出来る入れ物をイメージしてください。今回の場合、1行目を読み込む際には、「1」という数字を入れておきます。そして、1行ずつ下がるに連れて、+1していく流れです。
今、「最終行」と書きましたが、ここで「文字が入っている最後のセル」なのか、「文字が無くなった最後のセル」なのか、しっかり認識しておく必要があります。
ここでは、前者を指しています。
上の図で言えば、「岡山県」を読み込んだ後、該当セルは「5」行目まで進み、そこで初めて「空白」を認識します。
その際に変数という名前の箱に入っている数字は「5」になっているので、そこから「-1」とする訳です。
これで、最終行は「4」ということになります。
ただ、この方法の弱点は、1つ1つ読み込んでいくので、行数が数百、数千となった場合には、時間がとても掛かってしまうことです。
②Excelの一番下から、「Ctrl + UPキー」で上がる。
これ、VBAで頻繁に使う最終行識別方法です。
実際にExcelで試して頂くと早いのですが、「Ctrl + 矢印キー」を押すと、最終セル、もしくは入力されているセルのあるところまで、一気にアクティブセルが移動するのです。
なので、この概念はExcelの一番下まで一度行き、そこから一気に入力されている最後のセルまで上がるということです。
この場合、文字が入っている最後のセルまで戻るので、「-1」する必要はありません。
この方法はとても速く最終行を見つけることが出来ますが、1つ問題があります。
それは、途中に空欄行が入っていると、そこで止まってしまうということです。
なので、この方法を行う際には、事前に空欄行が無いかどうか確認しておく必要があります。
実際の現場では、もしデータテーブル自体に空白が存在するというの場合、新しく「列」を追加して、そこにシリアルナンバー(No.1~)を振るなどして、空白が存在しない列を作るなどして対応します。
③Excelのフィルタを利用する(該当の行数を知るため)
これは上記の①と②とは少し状況が違います。
但し、RPAのロボット作成ではよくあるシチュエーションです。
ある項目において、それをすべて処理するという場合、一旦、Excelのフィルタを利用します。
ここでは「コーヒー」でフィルタをかけています。
そして、カーソルを1つずつ下げていき、下げる毎にカウントすることで、該当のセル数を知ることができます。
RPA(プログラミング)においては、「分岐」と「繰り返し」の組み合わせで、様々な動きを再現するのですが、これも1つの「発想」です。