0

「Excel操作(指定範囲を区切り文字で連結した値の取得)」を作ってみました。

 

用途例

  • メールアドレスのリストをカンマやセミコロンで連結
  • 市外局番、市内局番、加入者番号をハイフンで連結
  • 都道府県、市区町村、町名、番地、建物名、部屋番号をスペースで連結
  • 年、月、日をスラッシュで連結
  • 時、分、秒をコロンで連結

 

作ったきっかけのスレッド

https://winactor.com/questions/question/メール送信を自動化する/

 

命名

  • Excel操作(指定範囲を区切り文字列で連結した値の取得)

 

ベースライブラリ

  • Excel操作(範囲選択)

 

加工箇所

' メイン処理をコメントアウト
' worksheet.range(range).Select

' 変数を初期化
result = ""

delimiter = !区切り文字列!

' 指定範囲の値を区切り文字列で連結
For Each c In worksheet.range(range)
  result = result & c.Text & delimiter
Next

' 変数に格納(末尾の区切り文字列カット)
SetUMSVariable $連結結果$ , Left(result, Len(result) - Len(delimiter))

 

テスト結果

  • 連結テスト.xlsx

a@a.a
b@b.b
c@c.c

  • Excel操作(指定範囲を区切り文字列で連結した値の取得)

範囲:A1:A3
区切り文字列:;

連結結果 → a@a.a;b@b.b;c@c.c

 

所感

  • 区切り文字列を可変にすることで、汎用性を確保できた
  • 用途をもっと見出したい
  • 不安定要素はなさそう
  • ホントは配列を使いたかった
  • Excelのセル範囲を配列に格納しようとしたものの、イメージしたシンプルコードでは実現しないと判明
  • Join(配列)にしたかったものの、末尾の区切り文字列カットで妥協

 

応用

  • たとえば、「Excel操作(指定範囲を区切り文字列で連結した値の一括取得)」
  • 行毎 or 列毎に連結結果をn個取得
  • n個取得にするには、、配列を使うことになるか
  • 列毎のニーズはあんまりなさそう
  • TEXTJOINみたいな関数で成り立つなら、「Excel操作(数式の結果取得)」と天秤にかけることになるか

https://winactor.com/questions/?q=Excel操作(関数(範囲)の結果取得)を作ってみた

 

お気づきの点、お知らせください。
便乗、ウェルカムです!

Yuzunoki 回答した質問
回答とコメントは、会員登録(無料)で閲覧できるようになります。