Excelの表に書かれている項目を確認して、複数のブックにデータを分割したい場合があります。例えば、長い顧客データを住所の項目を見て市区ごとにブックを分けたい場合などです。その際、手作業でExcelの表から一つ一つコピーして、異なるブックに振り分けたりすることはないでしょうか。PC版のなでしこを使えば自動で処理できます。
なでしこ3のPC版を活用しよう
なでしこ3のPC版のインストールについては、前回でも紹介しています。今回のようなExcel処理に便利なのは、なでしこ3のPC版です。なでしこ3のPC版は、Windows/macOS/Linuxとマルチプラットフォームで動作します。
特に、Windowsで手軽に使えるように配慮しており、こちらからダウンロードできるWindows版では、なでしこ3の動作に必要なNode.jsランタイムなど必要なツール一式を同梱したZIPファイルを配布しています。
新しくなったプラグインのインストール機能
なでしこ3PC版では、便利なプラグインは、ネットワークから最新版を必要な時に追加する仕組みとなっています。そのため、プラグインは、一覧を確認して、コマンドラインからインストールするという手順が必要でした。しかし、なでしこ3のPC版エディタの「nako3edit」から一覧から選んでインストールできるようになりました。
手順ですが、Windowsでは、実行ファイル「start.exe」を実行してメニューを起動して、「なでしこ3のPC版(Node.jsランタイム)を実行」ボタンをクリックして、「nako3edit」を起動します。macOSやLinuxではコマンドラインから「$(npm prefix)/node_modules/.bin/nako3edit」を実行します。
そして、nako3editが起動したら、画面上部にある「プラグイン」の追加をクリックすると上の画面が表示されます。そして、インストールしたいプラグインを選んでインストールします。
nadesiko3-officeプラグインをインストールしよう
さて、今回のプログラムを実行するには「nadesiko3-office」プラグインが必要になります。上記の「プラグインの追加」画面から「nadesiko3-office」を探して「追加」ボタンを押してインストールしましょう。
macOSやLinuxでは、ターミナルで「npm install nadesiko3-office」とコマンドを実行することでも、プラグインをインストールできます。
なお、このofficeプラグインを使う場合、Excelファイル自体を操作するので、本体のインストールは不要となります。
Excelファイルを住所で分割するプログラム
それでは、今回の本題となるプログラムを作成しましょう。最初に、サンプルのExcelファイルを確認してみましょう。ここで利用するのは、次のような顧客名簿のファイルです。こちらからダウンロードできます。この顧客名簿のExcelファイルをB列(住所1)を元に異なるブックに分割しましょう。
ダウンロードしたら、この名簿ファイルをデスクトップに「sample.xlsx」という名前でコピーしておきます。
プログラムを作って実行しよう
先ほど紹介した手順で「nako3edit」(なでしこ3のPC版エディタ)を起動しましょう。そして、「新規ファイルの作成」ボタンをクリックします。エディタが表示されたら、そこに次のプログラムを記述しましょう。
!「nadesiko3-office」を取り込む。
# Excelファイルを読む --- (*1)
「{デスクトップ}/sample.xlsx」のエクセル開く。
# シート内の全データを読み取る --- (*2)
「A2」から「E999」のエクセル一括取得して住所データに代入。
# 辞書型データに分割する --- (*3)
分割辞書={}
住所データを反復:
変数[F名前, F住所1, F住所2, F住所3, 担当者]は対象。
もし、F名前===NULLならば、抜ける。
もし、分割辞書[F住所1]===undefinedならば:
分割辞書[F住所1] = []
分割辞書[F住所1]に対象を配列追加。
# 分割したデータをExcelファイルに貼り付けて保存 --- (*4)
住所リストで分割辞書を反復:
ファイル名=「{デスクトップ}/名簿-{対象キー}.xlsx」
「保存: {ファイル名}」を表示。
エクセル新規ブック。
「A1」に[["名前","住所1","住所2","住所3", "担当者"]]をエクセル一括設定。
「A2」に住所リストをエクセル一括設定。
ファイル名にエクセル保存。
画面下部の「実行」ボタンを押してプログラムを実行すると、デスクトップに「名簿-(住所).xlsx」というExcelファイルが保存されます。なお、Excelファイルが開いたままだと、読み取りエラーが出るので、Excelファイルを閉じた状態で実行しましょう。
プログラムを確認してみましょう。(*1)では、デスクトップに配置したExcelファイルの「sample.xlsx」を読み取ります。