RPA は Web アプリへの入力に重宝します。私は確定申告書等作成コーナーの入力をほぼ RPA ( Power Automate ) でやっています。
一度この味を覚えてしまうと、もう手入力には戻れません。
特に、次のようなカード式の入力画面は、フォーマットが決まっているので、 Excel データを 1 行ずつ入力するのに向いています。
RPA + Excel が苦手とする入力フォーム
問題は、次のような、不定形の一覧表に入力したい場合です。
これでは、通常の Excel の表形式のデータを、 1 行ごとに入力していくという方法が使えません。
入力方法を考える必要があります。
例えば、この一連の入力フォームの行をばらばらにして、 1 列のデータとみなすと、 1 つ入力して Tab キーで次のフォームへ……を繰り返すことで入力ができそう。
そこで、おおもとの Excel データの表のほうを加工して、 1 列のデータにしてしまおうというのが、今回の記事です。
1 列のデータなら、 RPA で、 1 行あたり 1 列のデータを転記する動作を繰り返せばいいだけなので。
表をばらして一本のひも状にするのに使えるのが OFFSET 関数
ここで Excel の OFFSET 関数を使います。
任意のセルから右方向に m セル、下方向に n セル移動した数値を返す関数です。
先ほどの入力フォームの形に対応した表を Excel で作り(数値は架空のものです)、
各行をすべてつなげて一本の列を作ります。
元データを 5 列進むごとに、 1 行進むという動きを目指します。
転記先の 1 列データには、 1 行ごとに、上記の元データ 1 セルが入るというイメージです。
まず、一番左上のセルを OFFSET 関数の第 1 引数にして、そこから他のセルを相対参照していきます。
転記先データは、 元データが 1 列進むごとに 1 行進んでいき、 5 列進んだら次の行の 1 列目のデータを参照します。
この、転記先データが動くにつれて、参照先を変えるという動的なセル参照をするのに OFFSET 関数は向いています。
OFFSET 関数の第 2 引数は、 5 列動くごとに 1 増加します。
第 3 引数は、 5 列動く間、 0 から 4 までの数値で増加し、 4 に達したら、次は 0 に戻るようにします。
その引数群を、転記先の 1 列データの右隣りに並べておきます。
引数群を作るのは関数か、 ChatGPT か
この法則で動く引数群をつくるのに、ひとつは関数を使う方法があります。
第 2 引数の列の右セルが 0 ならば第 2 引数を上セルから 1 増加させる。
第 3 引数の列の上セルが 4 ならば第 3 引数を 0 に戻す、という IF 関数を使う方法です。
あるいは、 ChatGPT に丸投げするという方法もあります。
どっちがいいか。
これは、思いついたほうをやって、試せばいいかなと思います。
なお、 ChatGPT に表データ作成を頼むときは、 Excel で扱いたいなら「 Excel 形式で」と依頼すると、問題が起こりにくくなります。
同じ目的を達成するにしても、いろいろな方法を試してみて、頭を柔らかくしていきましょう。
編集後記
年賀状の返事を、『ふつうの軽音部』のコンビニプリントのハガキで出しました。手持ちの年賀状をセットして裏面に印刷することもできます。
あとは、印刷で PrintSmash アプリを初めて利用。ドットライナーやカッター定規も駆使しつつ、例のフリーランス向け小冊子の発送を開始しました。
その後は次の Kindle 本(確定申告のやりかた本)の目次を作成して、個人の 2024 年分確定申告(事業所得)の請負業務を開始しました。なお、まだ確定申告、受付中です。