Excelから抽出した内容を別Excelに転記をする際、重複項目は削除して新規追加分のみを
記載するときに、「行挿入」が使えず困った経験はありませんか?
以下例題を参考に解決していきましょう(^^)/
重複確認後に新規追加分のみをExcel最終行へ書き込む
やりたいこと:Excel「転記元」から情報取得し、Excel「転記先」に記載がない氏名情報のみを転記する!
※Excelデータは全てダミーであり架空の情報です。
転記元ファイル
転記先ファイル(黄色箇所が11,12行目入ればOK)
よくある失敗例:「行挿入」を使用した場合
転記元より抽出した内容と転記先の重複を確認する時に、転記先をループ処理を行う。
重複がない場合に「エラー」が発生し、書き込みができないという事象と繋がる。
ループをしているExcelに行挿入が使用できない理由はBizrobo!上のループカウントが上手くできなくなってしまうためです。
例題では最終行に書き込むとしていますので、こちらを例に説明します。
山田 花子さんを年齢の一番若い人の下に挿入したと仮定をします。
行挿入前を考えるとループ4(4行目)の氏名は「河田 あい」です。
ただし、左図にあるように行挿入後の「河田 あい」はループ5(5行目)になります。
これをロボットが判別がなくなってしまうため、
ループ使用時に「行挿入」アクションを使用することができないこととなっています。
ロボくん。。。
ちゃんとはたらいてくれぇぇぇl
下のやり方でお願いします・・・
名前付き範囲を使用した最終行の取得→書き込み
上記「転記先ループ」(2個目のループ)以降を削除し、以下設定を行っていきます!!
※上側の分岐「Set Named Range」の設定
- 名前付き範囲設定を使用
-
- 書き込むExcelのA列を右クリック
- その他をクリック
- 名前付き範囲として設定をクリック
- ファインダーの設定
-
- 「使用」を「範囲全体」から「一致するセル」へ変更
- 「セルパターン」に変数「抽出情報」へ変更
※今回は名前で重複判定をしています。
-
解説
A列から変数「抽出情報」を示す指示を出しています。
A列に既に「抽出情報」がある場合(重複がある場合)はその場所が示されます。
逆に、重複がなければエラーが発生します。
「次の処理」を「次の代替手段を試行」に変更
重複がない場合はエラー発生をするため、
トライステップにて最終行へ書き込む処理をしていきます。
※重複をした場合はこのステップで終了です。
※下側の分岐「Set Named Range」の設定
- 名前付き範囲設定を使用
-
- 書き込むExcelのA列を右クリック
- その他をクリック
- 名前付き範囲として設定をクリック
- ファインダー設定
-
- 「使用」を「範囲全体」から「一致するセル」変更
- 「セルパターン」に「.*」を入力
- 「Match#を使用」を「最後から」へ変更
1.2.3.にて、文字列が入っている列の最後から一番目の場所を示しています。
セルパターンの「.*」は「何か文字」が入っていること(空白のセルではないこと)を示しています。
その上で最後から1番目とすることで、文字が入っている最後の行を取得することができます。
※「コンテンツ設定」にて、”名前付き範囲”を使用したファインダー設定を行う。
- 転記元から取得した変数を転記
- ファインダー設定
-
- 「名前付き範囲で検索」へ変更
- 「範囲」を先ほど名前付き範囲設定で設定をした範囲へ変更。
- 「使用」を「行の位置」へ変更
- オフセットを「1」へ変更
-
詳細解説
STEP2にて最終行の場所を取得しました。
この設定はその1行下の場所を示す設定を行っています。
「範囲」でどこということを示し、その行のオフセット「1」で1行下と設定しています。
A列のファインダーがこのようになれば設定完了(^^)/
実際に出力したExcelを見てみましょう!
問題なく重複をしていない「山田花子」「山田太郎」さんを最終行へ書き込むことができました。
名前付き範囲設定はテスト判定代わりにできるということが重要なポイントです。
「テスト判定」というアクションステップを減らすこともできるため、オススメですので是非ご活用ください。
ご質問があれば回答しますので、是非コメントお願いします(#^.^#)
コメント