挙動と実装時の留意点
「先頭行をヘッダーとする」のチェックの有無
[列を削除]アクティビティは、「先頭行をヘッダーとする」のチェックの有無によって「列名」の指定の仕方が異なってくる。
- チェックあり:ヘッダー項目名で指定する
- チェックなし:列名称(A,B,C,…)で指定する
そのため、ヘッダー行がない場合でも「先頭行をヘッダーとする」のチェックを外してA,B,Cなどで指定して列を削除することができる。
ヘッダー行が1行目にない場合の「ソース」の指定方法
下記画像のように、表データがA1セルから始まっていない場合、「ソース」にヘッダー行の範囲を指定してあげれば、ヘッダー項目名で指定して列の削除が可能。
例えば上記のようなデータであれば、「ソース」にRangeで"B4:K4"を設定してあげればヘッダー名で指定して列削除ができる。
列名称で繰り返し削除する場合は、列がズレていくことに注意
列を削除すると、当然削除した列より右にある列の位置が左へズレていく。
ヘッダー項目名を指定して削除するのであれば、ズレても問題ないが、列の名称(A,B,C,…)を指定して列を繰り返し削除する場合は、列がズレていくことを考慮に入れて実装する必要がある。
いちばん簡単な対策としては、右の列から削除すること。
そうすれば、後に削除する列の位置は変わらないので、意図しない列を削除してしまうといったことが避けられる。
実装例
例として、ファイルパスやシート名、削除する列(カンマ区切りの文字列 例:D,E,F,K)を引数として受け取り、順番に削除するフローを実装してみる。
具体的な処理手順は、次の通り。
- 受け取った引数をカンマで分割して配列に格納する
- 配列の要素を右の列が前になるように並び替え(Linqを使用)
- [繰り返し (コレクションの各要素)]内で、配列に格納した列を繰り返し削除
Linqを用いた並び替えについて
改行をなくしたコードは下記の通り。
削除列配列.OrderByDescending(Function(n) n.Length).ThenByDescending(Function(n) n).ToArray
まずは、OrderByDescendingで文字数が多い要素ほど前に来るように並び替えを行っています。
これは、ExcelにおいてZ列以降はAA,AB,AC,…と続くので、これらの要素をA~Zよりも前に持ってくるためです。
その後にThenByDescendingを使って、文字列降順での並び替えを実行しています。






