StudioXのアクティビティ

UiPath StudioXのExcelアクティビティ【範囲 - 行・列】

2021/06/11

かExcelに関するアクティビティのうち、行や列の範囲で編集するアクティビティについてまとめました。

範囲の編集で、途中に行や列を追加/削除することは、頻繁にありますよね。

それを自動化できるようになると、身近な作業の効率化に繋がることでしょう。

この記事では、以下のアクティビティについて解説します。

記事編集時のStudioX - ver2022.4.3

範囲 - 行・列のアクティビティ

  • 行を挿入
  • 行を削除
  • 重複を削除
  • 列を挿入
  • 列を削除
  • VLOOKUP
  • MATCH関数

行を挿入

選択したシート、範囲または表内に行を挿入します。(ガイドはこちら)

任意の場所に空白行を追加します。

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

  • 表または範囲
  • 行数
  • 先頭行をヘッダーとする
  • 場所
    • 行番号

表または範囲

行を挿入する対象となる、範囲やテーブル、シートを指定します。

シートを指定する場合、範囲やテーブルがシートの1行目から始まる必要があります。

行数

追加する行数を指定します。

先頭行をヘッダーとする

[表または範囲]で選択した範囲の先頭行が、項目名であればチェックONにしてください。

シートを指定すると、1行目が項目名(ヘッダー)と認識します。

項目名が1行目にない場合は、[表または範囲]にシートではなく、範囲やテーブルを指定してください。

なお、指定した範囲がテーブルである場合は、チェックのON/OFF関係なく先頭行がヘッダーと認識します。

場所

[場所]は、以下3つの中から選択します。

  • 開始
  • 終了
  • 特定

それぞれの違いについて、見ていきましょう。

開始

表の先頭に空白行を追加します。

シートまたは範囲が対象の場合、ヘッダーのチェックONであれば指定した範囲の2行目に、OFFであれば1行目に空白行を追加します。

テーブルの場合は、ヘッダーのチェックON/OFF関係なく項目行の下に空白行が追加されます。

対象 ヘッダーチェックON ヘッダーチェックOFF
シート
範囲
テーブル

終了

表の一番下に空白行を追加します。

ただし、テーブルの場合は追加されず、何も起こりません

特定のインデックス

表の中の、指定した行に挿入する場合は、[特定のインデックス]を選択してください。

選択後、[行番号]が表示されるので、何行目かを指定しましょう。

行番号は、範囲やテーブルの行数を超える数値を入力するとエラーになります。

行を削除

シート、表、または範囲から指定した行を削除します。(ガイドはこちら)

指定した範囲から、行を削除します。

全ての項目(列)が同じ値の場合に、重複行を削除する機能も実装されていますね。

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

  • 表または範囲
  • 削除対象
    •  位置
    • 先頭行をヘッダーとする

表または範囲

行を削除する、範囲やテーブル、シートを指定します。

シートを指定する場合、範囲やテーブルがシートの1行目から始まる必要があります。

削除対象

削除する対象の行を指定します。

以下の4つのうちの、いずれかを選択します。

  • 特定の行
  • 全ての可視行
  • 全ての非表示の行
  • すべての重複行

特定の行

削除する行番号を、任意に指定します。

また、"特定の行”を選択した時点で、[位置]が表示されます。

位置

削除したい行番号を入力してください。

ここで注意点がひとつ。

[先頭行をヘッダーとする]が表示されていませんね。

と言うことはつまり、対象がシートや範囲の場合でも、先頭行が項目名(ヘッダー)であるかどうかは判断しないということです。

例えば、項目名がある表の場合で、2番目のデータを削除したい場合は、[位置]には"3"と入力してください。

対象が"シート”で、かつ、対象がテーブルの場合、[位置]に"1"を入力するとエラーになります。

対象がテーブルの場合は、項目行(ヘッダー)は考慮され、データ部分から1行目と判定されます。

[位置]は、1行だけでなく複数の指定も可能です。

入力方法は、以下のとおり。

[位置]の入力方法

  • 複数の行番号を指定…コンマ(,)区切りで行番号を入力
  • 行番号の範囲を指定…ハイフン(-)で行番号の範囲を入力
入力例

1行、3行、5行を削除…1,3,5

3~5行を削除…3-5

1~3行、5~7行を削除…1-3,5-7

”-"(ハイフン)や","(コンマ)について、見やすいよう全角で表記していますが、実際は半角入力です。

表の行数が5行しかない場合に6以上の値を指定すると、エラーになります。

すべての可視行

フィルター設定されている表で、表示されている行を削除します。

"すべての可視行”を選択すると、[先頭行をヘッダーとする]が表示されます。

先頭行をヘッダーとする

チェックONにすると、[表または範囲]で指定した範囲の先頭行をヘッダーとみなし、削除しません。

すべての非表示の行

フィルター設定されている表で、非表示となっている行を削除します。

Excelにはない機能ですね。便利!
おぐし

すべての重複行

重複している行を削除します。

重複する列を指定することはできず、全ての列で値が一致している場合のみとなります。

列を指定する場合は、[重複を削除]アクションを使用してください。

重複を削除

重複行を削除します。(ガイドはこちら)

対象の範囲について、特定の列をキーに重複行を削除します。

Excelの[重複の削除]と同じ機能ですね。

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

  • 範囲
  • 先頭行をヘッダーとする
  • 比較対象の列

項目名と説明で、"範囲"という名前が被っています。説明内での"範囲"は、"A1:E11"のようにセル範囲を指定するという意味です。項目名の場合は[範囲]のように大かっこで挟んでいます。

範囲

重複行を削除する、範囲やテーブル、シートを指定します。

シートを指定する場合、範囲やテーブルがシートの1行目から始まる必要があります。

1行目からデータが始まらない場合、シートで指定するのではなく、範囲を指定してください。

2行目以降からデータが始まる場合でも、メニューにはヘッダー名を表示してくれるのに、惜しい。
おぐし

また、テーブルを対象とする場合は、シートや範囲で指定するのではなく、テーブルで指定することをお勧めします。

テーブルをシートや範囲で指定しても、動作はします。

ですが、テーブルが配置している位置や指定方法によってエラーになるため、ここは素直にテーブルにした方がいいでしょう。

先頭行をヘッダーとする

[範囲]で選択した範囲の先頭行が、項目名であればチェックONにしてください。

なお、[範囲]でテーブルを指定した場合は、チェックONにしましょう。

テーブルでチェックONにしないと、エラーになります。

比較対象の列

重複が含まれている列を指定します。

最低1つは追加する必要があります。

[列を追加]を複数回クリックして複数の列を指定することも可能

列を挿入

シート、表、または範囲の指定した位置に新しい列を挿入します。(ガイドはこちら)

列を追加するアクティビティです。追加と同時に、書式の設定ができます。

ただし、1列分しか追加できません

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

  • 範囲
  • 先頭行をヘッダーとする
  • [場所]と[列基準]
  • ヘッダーを追加
  • データの書式設定の種類

項目名と説明で、"範囲"という名前が被っています。説明内での"範囲"は、"A1:E11"のようにセル範囲を指定するという意味です。項目名の場合は[範囲]のように大かっこで挟んでいます。

範囲

列を挿入する対象となる、範囲やテーブル、シートを指定します。

シートを指定する場合、範囲やテーブルはシートの1行目から始まる必要があります。

先頭行をヘッダーとする

[範囲]の先頭行が項目名であればチェックONにしてください。

シートを指定すると、1行目を項目名(ヘッダー)と認識します。

項目名が1行目にない場合は、[範囲]にシートではなく、範囲やテーブルを指定してください。

[場所]と[列基準]

追加する場所を[列基準]で指定し、列の追加を前にするか後ろにするかを[場所]で指定します。

レイアウトからすると順番が逆ですが、まず[列基準]の説明から。

[列基準]は、空白列を追加する位置を指定します。

[先頭行をヘッダーとする]がチェックONの場合は、メニューに列名が表示されますので、その中から選択しましょう。

(テーブルの場合は、ON/OFF関係なく項目名になります。)

[先頭行をヘッダーとする]がチェックOFFの場合、メニューには列番号が表示されます。

そして[場所]は、"前"と"後”から選択します。

ヘッダーを追加

列を追加すると同時に、項目名を設定できます。

値を指定しない場合、対象が範囲であれば空白が、テーブルであれば「列n」(nは数値)という項目名が自動設定されます。

[先頭行をヘッダーとする]がチェックOFFでも1行名に項目名が追加されるので、その場合は値をクリアしましょう。

データの書式設定の種類

列を追加すると同時に、その列の書式を設定できます。

[書式設定]をクリックして、どの書式にするかを選択します。

列を削除

シート、表、または範囲の指定した列を削除します。(ガイドはこちら)

列を削除します。

ヘッダー付の範囲やテーブルでは1行の削除しかできませんが、シートや範囲でヘッダーがない場合は、複数列の削除が可能になります。

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

  • ソース
  • [先頭行をヘッダーとする]と[列名]

ソース

列を削除する対象となる、範囲やテーブル、シートを指定します。

[先頭行をヘッダーとする]と[列名]

[ソース]の先頭行が項目名であれば、チェックONにしてください。

シートを指定すると、1行目を項目名(ヘッダー)と認識します。

チェックONの場合はメニューに項目名が表示されますので、その中から選択しましょう。

(テーブルの場合は、ON/OFF関係なく項目名になります。)

複数の列を削除する

複数列を削除したい場合は、以下の要件を満たす必要があります。

複数列指定の条件

  • (テーブルでない)シートまたは範囲
  • [先頭行をヘッダーとする]がチェックOFF
  • [列名]を[テキスト]で編集する

家電表(A1:E6)のB~D列を削除する場合を例に見てみましょう。

複数列を削除するには、以下のように編集します。

[ソース]の[+]-[Excel]-[Sheet1]-[家電表]を指定します。
([Excel内で示す]から"A1:E6"を範囲選択してもOK。)
[先頭行をヘッダーとする]はチェックOFFで。
[列名]の[+]-[テキスト]をクリックします。 [列名]に"B:D"と入力し、[保存]をクリックします。

[テキスト]の入力方法は、以下のとおりです。

[テキスト]の入力方法

  • 複数の列を指定…コンマ(,)区切りで列名を入力
  • 複数の列を指定…コロン(:)で開始列名と終了列名を入力
入力例

A列、C列、E列を削除…A,C,E

C~E列を削除…C:E

A~C列、E~G列を削除…A:C,E:G

”:"(コロン)や","は見やすいよう全角で表記していますが、実際は半角入力です。

VLOOKUP

ExcelのVLOOKUP関数を使用して範囲またはシート内のデータを検索します。(ガイドはこちら)

対象の値を表の1列目から検索し、値にマッチする行が見つかったら、その行の任意の(列の)値を返します。

例えば、対象のidをマスタ表から検索し、その価格を取得する場合を例に、図解しました。

VLOOKUPはExcelの表を扱う場合、必ずと言っていいほど出てくる数式ではないでしょうか。

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

  • 検索する値
  • 対象範囲
  • 列インデックス
  • 完全一致
  • 保存先

検索する値

検索したい値を指定します。

VLOOKUP(検索値, 対象範囲, 列インデックス, FALSE)

対象範囲

検索する対象となる、範囲やテーブル、シートを指定します。

VLOOKUP(検索値, 対象範囲, 列インデックス, FALSE)

検索するキーは、必ず1列目であることが条件です。

この点は、ExcelのVLOOKUPと変わりありませんね。

列インデックス

[対象範囲]から検索でマッチした行の、何列目の値を返すかを指定します。

VLOOKUP(検索値, 対象範囲, 列インデックス, FALSE)

入力を省略すると、最後の列の値が対象になります。

完全一致

チェックONにすると、[検索値]と[対象範囲]の1列目が完全一致する場合に限り、値を返します。

チェックONが、ExcelのVLOOKUPで言うFALSEに該当します。

VLOOKUP(検索値, 対象範囲, 列インデックス, FALSE)

一致する値が見つからない場合は、空白を返します。

Excelのように、エラー値を返さないのは助かりますね。

VLOOKUPの[完全一致]チェックOFF(TRUE)の使いどころ

VLOOKUPで、完全一致をチェックOFF(ExcelではTRUE)にすることはあるのでしょうか?

もしかすると、ExcelでもTRUEに設定したことがない人は、案外多いんじゃないかと思います。

僕もExcel歴は長いものの、しばらくの間、さも当たり前のようにFALSEしか使いませんでした。

しかし、TRUEに設定したほうがいいケースが、実はあります。

結論から言うと、TRUEにすると劇的に処理スピードが速くなるという条件があります

以下に、条件をまとめます。

TRUEにする場合の条件

  • 対象範囲の行数が多い。(数万行)
  • 対象範囲の1列目が、昇順にソートされている。
  • 検索値が、対象範囲に必ず存在する。

最初の条件の「行数が多い」とは、列数や値のボリュームによって左右されます。

数万件以上が目安で、そのあたりから違いに差が出てきますね。

気になる場合は、"高速VLOOKUP"で検索してみてください。沢山記事が出てきますよ。
おぐし

保存先

返した値を書き込む場所を指定します。

Excelのセル、または、クリップボードを保存先として指定できます。

VLOOKUPの実装例

冒頭の例題を再掲します。

これを、実際にStudioXで組んだ結果がこちらです。

価格の列(B列)に、順に結果を反映させるために、[繰り返し(Excelの各行)]アクションを使うところがポイントですね。

使用しているアクティビティ

MATCH関数

指定した項目をセルの範囲内で検索し、範囲内におけるその項目の相対位置を返します。(ガイドはこちら)

対象の値を一覧から検索し、値にマッチする行が見つかったら、一覧の先頭行(先頭列)から何番目の位置にあるかを返します。

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

  • 検索値
  • 対象範囲
  • 照合の種類
  • 保存先

検索値

検索したい値を指定します。

対象範囲

検索する対象となる、行や列、あるいはテーブルを指定します。

範囲は、1行、または1列の範囲を指定してください。

もちろん、複数列の表だったとしても、範囲を1行で指定すれば問題ありません。

テーブルの場合は、複数列から1列に絞れないため、1列のテーブルしか指定できません。

照合の種類

[対象範囲]から検索する種類を、以下の3つから選択します。

  • 0(検索値と等しい最初の値)
  • 1(検索値以下の最大値)
  • -1(検索値以上の最小値)

特に"0(検索値と等しい最初の値)"以外の場合、対象範囲を並べ替えていないと正しく検索されません。

必ず並べ替えた後の範囲を指定してください。

照合の種類="1(検索値以下の最大値)"の場合、並びを昇順にしてください。

照合の種類="-1(検索値以上の最小値)"の場合、並びを降にしてください。

サンプル例題

以下の条件で、[照合の種類]による違いをまとめました。

[検索値]="103", [対象範囲]="A1:A4"

照合の種類 対象範囲=昇順 対象範囲=降順
0(検索値と等しい最初の値) エラー エラー
1(検索値以下の最大値) 2(102の行番号を返す) エラー
-1(検索値以上の最小値) エラー 2(104の行番号を返す)

保存先

返した一番号を書き込む場所を指定します。

Excelのセル、または、クリップボードなどを保存先として指定できます。

まとめ

行や列の編集系アクティビティは、Excelの機能と、少しずつ違いがあります。

StudioXの動きがどうなるのか、一度でも頭に入れておけば、開発で想定外の動作をした時に「あ、そういえば」って思い出すことがあるかもしれません。

まとめます。

まとめ

  • 全列の重複削除は[行を削除]、特定の列をキーにして重複削除する場合は[重複を削除]。
  • 範囲にシートを指定した場合は、表が1行目から始まること。
  • [VLOOKUP]で、”完全一致"のチェックOFFを使うと高速になる。
  • [MATCH]関数は、照合の種類と並べ替えの組み合わせに注意。

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

-StudioXのアクティビティ

© 2023 おぐしログのRPA入門