StudioXのアクティビティ

UiPath StudioXのExcelアクティビティ【範囲 - 参照】

2021/05/31

StudioXのアクティビティには、Excelの範囲に関する制御が豊富にあります。

範囲 = 表と理解すると分かりやすいでしょう。ただ、UiPath公式で用いられる"表"は、「テーブル化された表」の意味を表すので注意してください。

この記事では、範囲の値を参照するアクティビティについて解説します。

記事編集時のStudioX - ver2021.10.5

範囲参照のアクティビティ

  • 繰り返し(Excelの各行)
  • フィルター
  • 最初/最後のデータ行を検索
  • 範囲を読み込み

表の値を取得したり、表の先頭行、最終行を取得するアクティビティが登場しますが、これらはExcel自動化の最初のステップで必要となることが多いです。

しっかりとモノにしてしまいましょう。

繰り返し(Excelの各行)

指定したシート、範囲、または表の各行に対して、含まれるアクティビティを1回繰り返します。(ガイドはこちら)

繰り返し処理は、プログラミングの基本的な構造の1つですが、基本を押さえておきたい場合は、こちらを参考にしてください。

UiPath StudioXで繰り返し処理の基本【ループって何?な人へ】

[繰り返し(Excelの各行)]アクションは、先頭行から1行ずつ値を読み取りながら、最終行まで繰り返されます。

以下のようなExcelの表があった場合、テレビの行からリモコンの行まで、1行ずつデータを読み取りながら下っていくわけですね。

この時、行データはCurrentRowという名前に記憶され、処理中にCurrentRowを参照して値を取り出します。

例えば、繰り返しが3周目で、[CurrentRowのprod_name]を指定した場合、"MDプレーヤー"が取り出されます。

アクティビティの動きを押さえたところで、次は設定する項目について理解しましょう。

以降、上の表をサンプルに解説していきます。

ここでは、以下の項目について解説します。

  • 繰り返し
  • 対象範囲
  • 先頭行をヘッダーとする
  • 空白行に対する操作

繰り返し

現在の周回の行データを記憶する名前を指定します。

既定では"CurrentRow"ですが、データの意味を表す名前に変更するほうがベターですね。

サンプル表だと、"家電製品情報"などでしょうか。

対象範囲

行データを取得したい範囲を指定します。

範囲の指定方法

範囲を指定するには、以下の4つの方法があります。

    • セルの範囲(名前の定義の利用も可)
    • 先頭行のセル
    • テーブル(表)
    • シート

それぞれの設定について確認しておきましょう。

セルの範囲

[セルの範囲]は、表が入力されている範囲を指定します。

Excel上であらかじめ範囲に名前の定義を設定しておくと、メニューに表示されるのでスマートですね。

下図のサンプルは、A1:E11に、"家電表"という名前が定義されています。

そうでない場合は、[Excel内で示す]がおススメです。

クリックするとExcelブックが開かれるので、そこからセルのアドレス(A1:E11など)を指定するといいでしょう。

先頭行のセル

選択したセルを先頭として、その列の行数を自動認識します。

ポイントは、1行のみ指定するという点ですね。

なお、複数の列を指定しても構いません。

例えば、以下のようにC2:D2を選択すると、"prod_name"と"model_no"の2列が範囲となります。

いくつか例を見てみましょう。

青い枠が[対象範囲]で指定するセル、薄い青の網掛けが、それによって認識する範囲です。

例1)先頭のセル1つを指定(C2)
その列の最終行まで(C2:C5)を範囲として認識します。

例2)先頭のセルを複数を指定(C2:D2)
複数列で最終行まで(C2:D5)を範囲として認識します。

例3)表の途中、例えば3行目を指定(C3:E3)
3行目から最終行まで(C3:E5)を範囲として認識します。

NG例)複数行を指定(C2:D3)
それを範囲と認識する(C2:D3)ため、最終行まで自動認識することはありません。

特に、行数が増える場合には重宝する機能ですね。

テーブル(表)

Excelで言う[テーブル]や[外部データのテーブル]を、StudioXでは[表]と呼んでいます。

Excelの[テーブル]や[外部データ] = StudioXの[表]

テーブル、ピボットテーブル、外部データテーブルが指定できます。

Excel StudioX

ピボットテーブルにありがちだと思いますが、項目名が2行になるようなレイアウトの場合は処理が上手くいかないので、注意しましょう。

シート

シートの指定も可能です。シートで参照するにあたり、いくつか条件があります。

項目名となる行が1行目であること。

1つのシートに1つの表(範囲やテーブル)であること。

Excelのシート全体がデータだけというケースも多いため、使う機会はよくあるでしょう。

先頭行をヘッダーとする

表に項目名の行があれば、StudioXのメニューに表示されるので便利です。

もちろん、項目名がない表もあるので、その場合はチェックOFFにしてください。

チェックON チェックOFF

チェックOFFのメニューは、指定する表の種類によって表記が変わります。

空白行に対する動作

繰り返し処理の中で、空白行が出現した場合に処理をどうするか決める設定です。

  • StopAfterThreeConsecutiveEmptyRows・・・空白行が3回続いたら処理をストップします。
  • Stop・・・空白行が現れる直前の行までで処理をストップします。
  • Skip・・・空白行はスキップしながら、最終行まで処理します。
  • Process・・・最終行まですべての行を処理します。

ちなみに、"先頭行のセル"の場合の「最終行」は、値が入っているか、何かしらの書式設定されているセルの一番下を指します。

では、"先頭行のセル"を指定した場合の、4つの動作の違いを比べてみましょう。

●の付いている部分が処理する行になります。

背景や罫線で色が付いていればいいんですが、文字の書式が設定されているだけだと、最終行が分かりにくいかもしれませんね。
おぐし

フィルター

1つの列内の値に基づき範囲、表、またはシート内にフィルターを作成します。既存のフィルターをクリアするために使用することもできます。(ガイドはこちら)

Excelでも同じ名前ですが、[フィルター]の機能ですね。

ここでは、以下の項目について解説します。

  • ソース
  • 列名
  • フィルターを設定
  • 既存のフィルターをクリア

ソース

フィルターを掛けたい範囲またはテーブル、シートを指定します。

列名

ソースで指定した範囲の中で、フィルターを適用する列を選択します。

[列名]の[+]を選択すると、1行目がメニューに表示されるので選択しやすいですね。

フィルターを設定

フィルターの条件を指定します。

フィルターの指定方法は、[基本的なフィルター]と[高度なフィルター]の2種類があります。

基本的なフィルター

指定したテキストに一致する値に絞ります。

[+追加]ボタンで、必要な分だけ候補を指定することが可能です。

ちなみに、テキストでなく、数値や日付の列であってもフィルター可能ですが、書式が一致していないと抽出できません

例えば、"$10,000"を抽出したい場合は、"10000"だとダメで、"$10,000"をテキストボックスに入力する必要があるという事です。

[基本的なフィルター]で便利な機能がもう1つ。

フィルターの文字列に、ワイルドカード"*"や"?"を使うことができます。

ワイルドカード

* ・・・0文字以上の任意の文字

?・・・1文字の任意の文字

ワイルドカードを使う場合、[+追加]で行を増やすことはできません。

なお、「ワイルドカードって何?」という人は、こちらを参照ください。

ワイルドカードの使い方

ワイルドカードとは、任意の文字を表す特殊な記号のことです。

先に説明したとおり、ワイルドカードには2種類あり、"*"は0文字以上の任意の文字、"?"は1文字の任意の文字を表します。

イメージを掴みやすいよう、いくつか例をお見せしましょう。

を使った例

あおあおで始まる文字。あおみどりあおむらさきあお

を含む文字。あずつばた

ちゃちゃで終わる文字。ちゃまっちゃちゃ

を使った例

で始まる2文字。

??で終わる3文字。しこみか

を挟んだ3文字。

???:3文字のテキスト。きいろえんじ

を使った例

で始まる2文字以上の文字。むらさき

:2文字目がの文字。あか

:2文字目が"す"の3文字以上の文字。なぐさ

上記では、見やすいように全角にしていますが、実際に指定する場合は半角で指定してください。

高度なフィルター

[高度なフィルター]を選択すると、より細かな条件が指定できます。

なお、フィルターの条件は2つまでとなります。

フィルター条件

選択できるフィルター条件は、以下の15項目です。

フィルター条件 備考
なし フィルターの指定をしません。
< [フィルターの値] より小さい値を対象とします。書式が数値or日付の項目を指定してください。
> [フィルターの値] より大きい値を対象とします。書式が数値or日付の項目を指定してください。
<= [フィルターの値] 以下の値を対象とします。書式が数値or日付の項目を指定してください。
>= [フィルターの値] 以上の値を対象とします。書式が数値or日付の項目を指定してください。
= [フィルターの値] と等しい値を対象とします。
!= [フィルターの値] と等しくない値を対象とします。
空である 空(ブランク)である値を対象とします。
空ではない 空(ブランク)でない値を対象とします。
次で始まる [フィルターの値]で始まる値を対象とします。テキスト形式の項目を指定してください。
次で終わる [フィルターの値]で終わる値を対象とします。テキスト形式の項目を指定してください。
次を含む [フィルターの値]を含む値を対象とします。テキスト形式の項目を指定してください。
次で始まらない [フィルターの値]で始まらない値を対象とします。テキスト形式の項目を指定してください。
次で終わらない [フィルターの値]で終わらない値を対象とします。テキスト形式の項目を指定してください。
次を含まない [フィルターの値]を含まない値を対象とします。値はテキストである必要があります。

テキストのフィルター条件であれば、ワイルドカードの使用も可能です。

Excelのフィルター機能をすべてカバーしているので、編集しやすいですね。
おぐし

複数のフィルター設定が可能

[フィルター]アクションを複数設置することで、複数の列にフィルターを指定できます。

例えば以下の場合、[prod_name]列と[cost]列の2か所にフィルターが掛けています。

当然ですが、ソースは同じ範囲でないといけません。

既存のフィルターをクリア

チェックONにすると、フィルターの条件が解除されます。

このとき、[列名]が指定されていれば対象の列を解除、指定されていなければすべてのフィルターを解除します。

最初/最後のデータ行を検索

指定したシート、範囲または表内で、データの開始の行と最後の行の番号を検索します。(ガイドはこちら)

ターゲットとする項目(列)で、連続して値が入っている最初の行番号と最後の行番号を取得します。

例えば、以下の表で、ターゲットの項目に[discount]を指定して検索た場合、最初の行番号は"2"で、最後の行番号は"7"となります。

最後の行番号は、空白が一定数連続するまで検索し続けます。

初期値では、空白が2行以上連続したら最終行に到達したと判断するため、この場合は"7"となるわけですね。

さらにオプションを設定することで、更に応用の利いた値を取得できるようになっています。

ここでは、以下の項目について解説します。

  • ソース
  • 先頭をヘッダーとする
  • 列名
  • 最初/最後の行の番号を保存
  • 最後の行として設定
  • スキップする空白行
  • 最初/最後の行オフセット

ソース

検索したい範囲またはテーブル、シートを指定します。

先頭をヘッダーとする

先頭行が項目名であればチェックONに、データであればチェックOFFにしてください。

チェックON チェックOFF

列名

検索するターゲットの項目名(または列番号)を指定します。

[先頭をヘッダーとする]がチェックONであれば、メニューから項目名を指定できます。

チェックOFFの場合は、メニューが列番号になります。

[先頭をヘッダーとする]チェックON [先頭をヘッダーとする]チェックOFF

最初/最後の行の番号を保存

最初/最後の行番号を記憶するための名前を設定します。

[最後の行番号の名前]は必須項目ですが、[最初の行番号]は、必要に応じて名前を指定してください。

最後の行として設定

[最後の行番号の名前]に影響する項目です。

2つの選択肢があり、"入力されている最初の行"か、"最初の空の行"かの、どちらかを選択します。

選択項目

  • 入力されている最初の行
  • 最初の空の行

新しい行にデータを追加したい場合には、"最初の空の行"を選択すると良さそうですね。

スキップする空白行

行番号を検索するとき、何行分まで空白が連続しているなら検索を継続するか指定します。

初期値は1です。

初期値1の場合、空白が1行であれば検索は継続しますが、2行以上空白が連続すれば最終行に到達したと判断し、空白行の手前の行番号を取得します。

これを、例えば[スキップする空白行]を"2"に変更すると、結果が[最後の行番号]="10"に変わります。

[最後の行として指定]が"最初の空の行"の場合は、最後の行番号="11"になります。

最初/最後の行オフセット

オフセットとは、簡単に言えば指定した値の分だけ数値をずらすということです。

[最初の行オフセット]は、[最初の行の番号]の結果が指定した数だけ下にずれます。

例えば、最初の行番号=2、オフセット=1の場合、[最初の行の番号]=3になります。

[最後の行オフセット]は、[最後の行番号]の結果が指定した数だけ上にずれます。

例えば、最後の行番号=7、オフセット=1の場合、[最後の行の番号]=6になります。

[最初の行オフセット]…[最初の行の番号]にオフセット数をプラス(+)。

[最後の行オフセット]…[最後の行の番号]からオフセット数をマイナス(ー)。

図で確認すると、分かりやすいでしょうか。

 

範囲を読み込み

Excelの範囲の値をデータテーブルとして読み取ります。(ガイドはこちら)

Excel上の指定した範囲を、データテーブルとして取り込みます。

データテーブルとは、"プログラムが処理しやすいよう、値にルール(属性)が設けられた表"と言えばいいでしょうか。

データテーブルについてはこちらで解説していますので、参考にしてみてください。

データテーブルとは

ここでは、以下の項目について解説します。

  • 範囲
  • 先頭行をヘッダーとする
  • 表示行のみ
  • 保存先
  • 読み取る値の書式

範囲

データテーブルとして取り込む範囲またはテーブル、シートを指定します。

範囲の具体的な指定方法については、こちらを参照ください。

範囲の指定方法

先頭行をヘッダーとする

取り込む範囲の先頭行が項目名であればチェックONに、データであればチェックOFFにしてください。

チェックON チェックOFF

表示行のみ

取り込む範囲のうち、表示されている行のみ取り込むか、非表示の行を含めて取り込むかを指定します。

行を非表示にする方法は、2通りあります。

1つは、フィルターを使う方法ですね。

もうひとつは、非表示にしたい行を選択して、[右クリック]-[非表示]をクリックする方法。

どちらも、チェックON時には除外されます。

非表示の方法

  • フィルターを使用する
  • 行を選択して右クリック-[非表示]
高さを0.00にした場合も、非表示と同じ意味になります。
おぐし

保存先

取り込んだ範囲について、どこに記憶するか指定します。

[クリップボードにコピー]や[後で使用するために保存]を指定すると、データテーブルとして取り込みます。

対して、Excel(またはノートブック)を指定すると、シートに値が書き込まれます

読み取る値の書式

数値や日付を、どのような形式で取り込むかを指定します。

以下、4つの項目から選択してください。

(null)

プロジェクトでの設定に従います。

設定する箇所はこちら。

[プロジェクト]-[プロジェクト設定]をクリックします。 [Excelビジネス]-[Excelファイルを使用]-[実行環境の値]を選択します。

Default

Excelから返される既定の表示形式です。

いくつか値を検証してみましたが、セルに表示されている値と同じ形式でした。

RawValue

表示形式を無視した値を返します。

数式バーに表示されている値、と言ってもいいでしょう。

DisplayValue

Excelで表示されている結果をそのまま返します。

設定による違い(メッセージボックスで表示)

日付と数値をメッセージボックスに表示し、比較すると以下のようになります。

数式バーの値
(セルの表示)
2022/3/27 12:34:56
(令和4年3月27日)
1234.56789
(1,234.568)
Default 令和4年3月27日 1,234.568
RawValue 03/27/2022 12:34:56 1234.56789
DisplayValue 令和4年3月27日 1,234.568

チュートリアルのすすめ

[Excelの繰り返し(各行)]アクティビティについて、より理解を深めるため、「チュートリアル: 最初のオートメーションプロジェクトを作成する」を読むことをお勧めします。

チュートリアルの内容について、読み砕いてまとめた記事を用意しましたので、こちらも併せて参考にしてください。

UiPath StudioXチュート読み砕き【最初のオートメーション プロジェクトを作成する】

続きを見る

まとめ

Excelの表にアクセスするアクティビティは、基本的な使い方が分かっているだけでも十分です。

あとは、条件分岐を上手く使えば自由度高くロジックを組むことができますから。

そこから更に、オプションなどの細かい機能を知ると、よりスマートな処理が組めるようになりますので、ひとつでも多く使えるといいですね。

まとめます。

まとめ

  • [Excelの繰り返し(各行)]では、単一セルの指定ができる。
  • [フィルター]でワイルドカードを利用すれば、より柔軟な指定が可能。
  • [最初/最後のデータ行を検索]で、先頭行と最終行の位置を取得できる。
  • [範囲を読み込み]は、データテーブルとして取り込む。

この記事で、何か1つでも新しい発見が得られたのなら、僕もうれしいです。

-StudioXのアクティビティ

© 2024 おぐしログのRPA入門