エクセル編集① (フィルタ)
エクセル編集
関連記事:エクセル編集① (フィルタ2)
記事一覧:目次
使用:配列、フィルタ、for each row、get row item、build data table、add data row
1.まずは公式でも紹介されているエクセル編集の方法から。データにフィルタをかけて抜き出すというもの。他のやり方は色々ありますが、前述の通りまずは公式紹介の通りに。用意したデータは画像の通り。
![](https://cdn.amebaowndme.com/madrid-prd/madrid-web/images/sites/332380/5d15e4ddd687364cf9cd70688c9f36c7_993742b9d924d74962210cfd3791bad6.jpg?width=960)
2.上記エクセルSheet3のデータを、read rangeでdatatable(名前DT1)に入れる。1行目をヘッダーと認識する為、2枚目画像のOptions、AddHeadersへのチェックは忘れずに。
![](https://cdn.amebaowndme.com/madrid-prd/madrid-web/images/sites/332380/9ea72082706c1c3833b9e08b85ad7661_837414e44cacdcf15606333c7b436be8.jpg?width=960)
![](https://cdn.amebaowndme.com/madrid-prd/madrid-web/images/sites/332380/3ffccccb105b742924d24e13f5394c6e_b57eb1fa75c07a90d4a1d881540d832e.jpg?width=960)
3.続いて、DT1のデータにフィルタをかけていきたい(行の編集)ので、for each rowを使用する。for eachは順に繰り返していくという処理。
![](https://cdn.amebaowndme.com/madrid-prd/madrid-web/images/sites/332380/c3feba0ba77f69853930a2da5cefed01_e58f72e7c2368fb634333ef7914a2f80.jpg?width=960)
4.bodyの中にGet row item を入れ、各行のデータを取得していく。郵便番号を変数adに、都道府県をad2に、フラグをFLGに入れる。
![](https://cdn.amebaowndme.com/madrid-prd/madrid-web/images/sites/332380/79c057689433790312486a2be2fdb2e3_5a65c153ff19d9fe7d0b214f1743ba37.jpg?width=960)
5.前項目までの処理でDT1のデータを各行ごとに読み込んだので、ifで「フラグ有り」を抽出し、write lineで試しに結果を出力してみる。
6.ちゃんとフラグ有りのデータが取得されている事が確認できる。
7.抽出されている事は確認できたので、次は出力処理へ。add data rowという機能を使って出力していく。
8. add data rowのプロパティは画像の通り。出力したいデータは複数データの集まりとなるので、ArrayRowには「配列」を使って出力したい変数を入れていく。出力したデータは、newDTというデータテーブルの中に入れる。※配列はここで人生初使用なので、説明は出来ません…。
9.続いてsheet3の元データ(DT1)にフィルタをかけたので、write rangeでフィルタ結果(newDT)をsheet4に出力する。add headerにチェックをいれたらrangeはA1、入れないならA2に。※もしA2にする場合は、sheet4に後述11項目のヘッダーを作る。
10.一通り完成したので実行をしてみると、add data rowの所で画像のようなエラーが。
11. エラーはnewDTが無いというもの。項目8でadd data rowを設定した時のプロパティを見直してみると、「各データをnewDTに入れる」と指定しただけで、newDT自体は作ってなかった事が原因。newDTは作り方も何種類かありますが、とりあえずread rangeを使って設定する。
sheet4にタイトルだけの空データを作って、read rangeで読み込み、newDTに格納する。
12.続いて別のnewDTの作り方も紹介。公式で紹介されている、build data tableを使用してnewDTを作成する方法。
data table...をクリックして、表を一つずつ作っていく。
13.格納先のnewDTも完成したので、メインフローを再度実行。sheet4を見てみると、ちゃんとフラグ「済」のものだけが抽出されている。もし新規ファイルとして保存したい場合は、write rangeのエクセル名部分を好きな名前に変更する。