Excelで基準のセルから横方向にx、縦方向にy移動(オフセット)したときのセル位置を返すフローを実装します。
ユースケース
例えば、1つのシートに毎月のデータを記載していくようなExcelで、転記先のセル位置を取得する必要がある場合などに使用。
実装方針
引数
- 基準のセル位置(In / String型)
- X方向へのオフセット量(In / Int32型)
- Y方向へのオフセット量(In / Int32型)
- オフセットした後のセル位置(Out / String型)
処理手順
- 基準のセル位置から列を表す文字列を抽出
(例)C9 → C - 基準のセル位置から行数を表す数字を抽出
(例)C9 → 9 - 列を表す文字列を列数を表す数字に変換
(例)C → 3 - 列数にX方向へのオフセット量を足す
(例)列数 3、X方向へのオフセット量 2 → 5 - 行数に指定したオフセット量を足す
(例)行数 9、Y方向へのオフセット量 3 → 12 - 4.を列を表す文字列に変換する
(例)5 → E - 6.と5.を文字列として結合
(例)E12
実装
0. 変数と引数の設定
1. 基準のセル位置から列を表す文字列を抽出
[一致するパターンを探す]アクティビティにて、A~Zの文字列の1回以上繰り返しを正規表現で抽出し、結果として返ってきたコレクションの1つ目の要素を取得。
[一致するパターンを探す]のプロパティについて
比較的新しいバージョン(※)では、「出力」欄に「最初の一致」という項目があります。
これを使えば、正規表現で一致したものの中で最初に一致した文字列を抽出することができます。
(※)Studio 2025.0.172 / UiPath.System.Activities v25.6.1で存在することを確認
2. 基準のセル位置から行数を表す数字を抽出
1.と同様に、[一致するパターンを探す]アクティビティにて、数字の1回以上繰り返しを正規表現で抽出し、結果のコレクションの1つ目の要素を取得。
※代入する際に、CIntで数値型に変換しています。
3. 列を表す文字列を列数を表す数字に変換
「UiPath.Excel.Helpers.ExcelUtilities」の下記のメソッドを使うと、列名称 ⇔ 列番号の変換ができます。
- ConvertColumnIndexToColumnLetter:列番号 → 列名称
- ConvertColumnLetterToColumnIndex:列名称 → 列番号
※こちらの記事を参考にさせていただきました。
[代入]アクティビティでこのUiPath.Excel.Helpers.ExcelUtilities.ConvertColumnLetterToColumnIndexメソッドを使います。
4. 列数にX方向へのオフセット量を足す / 5. 行数に指定したオフセット量を足す
これまでの処理で取得した列数・行数に引数で指定したオフセット量をそれぞれ足します。
6. 4.を列を表す文字列に変換する
4.の処理で移動した後の列数を取得できたので、これを列名称に変換します。
[代入]アクティビティで今度は、UiPath.Excel.Helpers.ExcelUtilities.ConvertColumnIndexToColumnLetterを使います。
7. 6.と5.を文字列として結合
最後に、オフセット後の列名称と行数を文字列として結合すれば、今回求めたかったオフセット後のセル位置を取得できます。
完成後のフロー
参考