背景
- 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'
その他
- これに似たコードをいくつか用意しております