LoginSignup
6
6

More than 5 years have passed since last update.

VBAで文字列結合を便利にすることで効率的にプログラミング

Last updated at Posted at 2017-02-19

背景

  • Excelで文字列結合をする方法には「&」と「CONCATENATE()」がある
  • しかし、どちらの方法もセル一つ一つ指定する必要がある
    • =A1&A2&A3
    • =CONCATENATE(A1,A2,A3)
  • せっかく関数があるのに範囲選択ができない(本当になんのための関数?)
  • これを範囲選択可能にしたVBAを記載したサイトがある
  • 単純な文字列結合以外にも私の場合、以下のようなケースで文字列結合ができるとより便利になると思い上記サイトを参考に関数を作成した
  • 関数を利用してかれこれ5年以上ですが、とても便利でかなり頻繁に利用します
No 言語 目的 文字列結合方法
1 SQL カラムの大量選択 区切り文字「カンマ」
2 SQL CASE文の大量生成 区切り文字「スペース」
3 Markdown テーブル作成 区切り文字「パイプ」
4 R, Python headerを定義する 区切り文字「カンマ」クォート「シングルクォーテーション」

関数のコード

関数の作り方(Excelへ登録の仕方)

  • ネットにたくさん記事があるので各自で調べてください

使用例

区切り文字「カンマ」

Excel

A B C
1 dt
2 product
3 price

関数

=ConcatenateRangeText_comma(B1:B3)

結果

dt,product,price

区切り文字「スペース」

Excel

A B C D E F
1 ,SUM(CASE WHEN product = 'car' THEN 1 ELSE 0 END) AS product_car
2 ,SUM(CASE WHEN product = 'bike' THEN 1 ELSE 0 END) AS product_bike

関数

=ConcatenateRangeText_space(B1:E1)
=ConcatenateRangeText_space(B2:E2)

結果

,SUM(CASE WHEN product = 'car' THEN 1 ELSE 0 END) AS product_car
,SUM(CASE WHEN product = 'bike' THEN 1 ELSE 0 END) AS product_bike

区切り文字「パイプ」

Excel

A B C D
1 2 SQL
2 3 Markdown
3 4 R,Python

関数

=ConcatenateRangeText_separator(A1:D1,"|")
=ConcatenateRangeText_separator(A2:D2,"|")
=ConcatenateRangeText_separator(A3:D3,"|")

結果

|2|SQL|
|3|Markdown|
|4|R,Python|

区切り文字「カンマ」クォート「シングルクォーテーション」

Excel

A B C
1 dt
2 product
3 price

関数

=ConcatenateRangeText_singlequote_comma(B1:B3)

結果

'dt','product','price'

その他

  • これに似たコードをいくつか用意しております

参考

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6