基礎講座第2章5 - 文字列の結合

この講座は有料講座です。
講座の購入後ご覧になれます。

ログインアカウントの新規作成

解説

文字列の結合には、結合演算子「&」という記号を使います。結合演算子は、文字列でないものも、むりやり文字列とみなして処理してくれます。

【この動画で使用する教材ファイル】
 ・Kiso02_01.xls
 ・kiso_mm_movie.pdf(P10:講義概要)
※講座内で使用する資料は、この個別ページ内でダウンロードできます。

共有メモ

名前重要度メモ
Matsumoto-・結合演算子(&)は、文字列でないものも、むりやり文字列とみなして処理してくれます

この教材についての過去の質問・感想

11753 : 小川慶一の回答 (2020-01-20 10:40:04)

ゲストさん:

はじめまして。よろしくお願いいたします (^^

> 結合の&の前後には、半角スペースがないとVBAでは動かないという理解で宜しいでしょうか。
> (普通に、エクセルで関数を書く時には、スペースなしでも結合ができるので、多少混乱しています。

こういうのは、実際に試されてみるとよいです。
僕の回答を待たないで学習を進められますし、練習になりますし、自分で実験したことについては理解が深まりますので。

結論から言うと、スペースを入れないとロクなことになりません。
習慣としてスペースを入れるようにしてください。

以下、サンプルを書いてみました。
VBEに貼りつけてみてください。そのときに行全体が赤くなってしまったものはすべてNGです。

Sub and_sample()
	'直前の文字列なり数値なりとの間のスペースを削除
    Range("A1").Value = "A"& "B"
    Range("A2").Value = "A"& 3
    Range("A3").Value = 123& "B"
    Range("A4").Value = 123& 456

	'直後の文字列なり数値なりとの間のスペースを削除
    Range("B1").Value = "A" &"B"
    Range("B2").Value = "A" &3
    Range("B3").Value = 123 &"B"
    Range("B4").Value = 123 &456

	'直前直後の文字列なり数値なりとの間のスペースを削除
    Range("C1").Value = "A"&"B"
    Range("C2").Value = "A"&3
    Range("C3").Value = 123&"B"
    Range("C4").Value = 123&456
End Sub


なお、こんな結果になります↓。
https://www.dropbox.com/s/6hb6gcepvbhtejw/and_sample.JPG?dl=0

変数が登場するとさらにややこしくなるのですが、これでも十分ややこしいので、これ以上の解説は不要かと。

「ではなぜこれはOKで、これはNGなんだ」とか、そういう議論をするには、発展編1以上の知識が必要です。
基礎編学習の段階では、「スペースを入れないとロクなことにならない。習慣としてスペースを入れるようにするのがよい」と鵜呑みにしておいていただくのが良いかと思います。


11749 : ゲストさんのコメント (2020-01-19 13:58:03)

初めまして、エクセルのマクロを利用して仕事に使いたいと考えています。結合の&の前後には、半角スペースがないとVBAでは動かないという理解で宜しいでしょうか。(普通に、エクセルで関数を書く時には、スペースなしでも結合ができるので、多少混乱しています。


10095 : 小川慶一の回答 (2018-06-10 20:08:31)

ゲストさん:

[x] 結合演算子は本来文字列を結合するもの。

OKです。

[y] でも小人ちゃんの配慮で文字列以外も文字列とみなして結合してくれる。

OKです。

[z] 結合結果(文字列or数字のどちらとみなされるか)は、結局そのセルの書式設定に依存すると理解しました。

NGです。
以下の[a]と[b]を同一視されているのではないかと。

[a] 結合結果(すなわち、&で結合した直後にできあがったもの)は、文字列です。(まさに、上記[y]でゲストさんがおっしゃったとおりです)

[b] セルに値を投入したとき、そのセルに最終的に入る値は、セルの書式設定に依存する


たとえば、以下の式で変数 x に投入されるのは、 "31" という、長さ2文字の文字列です。
(「31」という数字ではなく、「"31"」という文字列)

[info]Sub hoge()
Dim x
x = 3 & 1 '[a] 変数 x には、文字列の "31" が入る

End Sub[/info]

さて、セルA1-A4のそれぞれが、以下の表示形式(書式)になっているとしましょう。

A1: 標準
A2: 数値
A3: 文字列
A4: 日付

(上記のそれぞれは、エクセルのダイアログ「セルの書式設定」のタブ「表示形式」から設定できます)

そのとき、以下のマクロを実行するとします。
さて、どうなるか。

[info]Sub fuga()
Dim x
x = 3 & 1 '[a] 変数 x には、文字列の "31" が入る

Range("A1").Value = x '[b-1] 数字の 31 が入る(書式が「標準」だから)
Range("A2").Value = x '[b-2] 数字の 31 が入る(書式が「数値」だから)
Range("A3").Value = x '[b-3] 文字列 "31" が入る(書式が「文字列」だから)
Range("A4").Value = x '[b-4] 日付の 1900/1/31 が入る(書式が「日付」だから)
End Sub[/info]

...。
ということです。

...という説明で、どうでしょう?
サンプルプログラム内のコメント[a], [b-1]~[b-4] は、それぞれ、サンプルプログラムを紹介する前の解説[a], [b]と対応しています。

ご確認ください。
というか、できれば、自分で手書きで同じプログラムを書いて、実行されてみると良いでしょう。


関連の解説を以下の2つの動画でしています。
上記[a], [b]に気をつけて見直してみてください。

○基礎講座第2章4 - セルの書式と、値の投入(この動画のひとつ前のものです)
https://online.pc5bai.com/movie/index/25/112

○基礎講座第2章5 - 文字列の結合(この動画です)
https://online.pc5bai.com/movie/index/25/113


まずは、以上のとおりです。
この説明で十分ご理解いただけるか?五分五分かな、と思っています。ので、フィードバックください (^^)/~


> 結合演算子は本来文字列を結合するもの。
> でも小人ちゃんの配慮で文字列以外も文字列とみなして結合してくれる。
>
> 結合結果(文字列or数字のどちらとみなされるか)は、結局そのセルの書式設定に依存すると理解しました。


10089 : Matsumotoさんのコメント (2018-06-10 12:17:59)

結合演算子は本来文字列を結合するもの。
でも小人ちゃんの配慮で文字列以外も文字列とみなして結合してくれる。

結合結果(文字列or数字のどちらとみなされるか)は、結局そのセルの書式設定に依存すると理解しました。


9080 : 小川慶一の回答 (2017-10-19 23:19:19)

Atakaさん:

はい、まずは、試してみてください。
差異を感じて疑問に思うことがあれば、ご質問ください 。

またの投稿、お待ちしています ^^

> 小川先生
> お返事ありがとうございました。
> 実践あるのみですねやってみます(>_<)
>          


9075 : Atakaさんのコメント (2017-10-18 21:43:55)

小川先生
お返事ありがとうございました。
実践あるのみですねやってみます(>_<)
         


9035 : 小川慶一の回答 (2017-10-11 18:27:54)

Atakaさん:

はじめまして ^^
まずは、試してみてください。差異を感じて疑問に思うことがあれば、ご質問ください ^^

> はじめまして。小川先生。
> エクセルを触りだしてまだ半年。仕事で関数式を組み合わせてデータ作成をしています。こちらの講座で勉強して仕事のスピードを上げたいと思っています。
> 演算子の特徴はマクロだけのルールではなく、エクセルのセル自体のルールと思ってよろしいでしょうか。仕事でデータ作成をしている中で文字列、&、” ”、が多く出てくるので混同してしまいそうなので質問です。


9027 : Atakaさんのコメント (2017-10-09 22:55:28)

はじめまして。小川先生。
エクセルを触りだしてまだ半年。仕事で関数式を組み合わせてデータ作成をしています。こちらの講座で勉強して仕事のスピードを上げたいと思っています。
演算子の特徴はマクロだけのルールではなく、エクセルのセル自体のルールと思ってよろしいでしょうか。仕事でデータ作成をしている中で文字列、&、” ”、が多く出てくるので混同してしまいそうなので質問です。


8659 : 小川慶一の回答 (2017-08-10 21:54:42)

受講生 さん:

基礎編では、算術演算子、結合演算子、代入演算子、比較演算子が登場します。
基礎編ということもあるので講座内ではいちいち称しませんが、今後の何かの参考までに。

> &は左と右を合わせる演算子
> 演算子という言葉を覚えた!


8654 : 受講生さんのコメント (2017-08-10 19:38:02)

&は左と右を合わせる演算子
演算子という言葉を覚えた!


7375 : 受講生さんのコメント (2016-12-07 16:27:28)

理解できました。


3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 基礎講座第1章1 - マクロの入ったファイルを開くときの注意点
    【動画1】 基礎講座第1章1 - マクロの入ったファイルを開くときの注意点 未習得
  2. 【動画2】 基礎講座第1章2 - オブジェクトの指定
    【動画2】 基礎講座第1章2 - オブジェクトの指定 未習得
  3. 【動画3】 基礎講座第1章3 - 色の指定
    【動画3】 基礎講座第1章3 - 色の指定 未習得
  4. 【動画4】 基礎講座第1章4 - コメントの活用
    【動画4】 基礎講座第1章4 - コメントの活用 未習得
  5. 【動画5】 基礎講座第1章5 - 算術演算子
    【動画5】 基礎講座第1章5 - 算術演算子 未習得
  6. 【動画6】 基礎講座第1章6 - 手書きする演習
    【動画6】 基礎講座第1章6 - 手書きする演習 未習得
  7. 【動画7】 基礎講座第1章7 - ワークシート関数との挙動の違い
    【動画7】 基礎講座第1章7 - ワークシート関数との挙動の違い 未習得
  8. 【動画8】 基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義
    【動画8】 基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義 未習得
  9. 【動画9】 基礎講座第1章9 - 変数を活用するときの注意点
    【動画9】 基礎講座第1章9 - 変数を活用するときの注意点 未習得
  10. 【動画10】 基礎講座第1章10 - 自動データヒント機能
    【動画10】 基礎講座第1章10 - 自動データヒント機能 未習得
  11. 【動画11】 基礎講座第1章11 - テストの方法
    【動画11】 基礎講座第1章11 - テストの方法 未習得
  12. 【動画12】 基礎講座第1章12 - ドリル
    【動画12】 基礎講座第1章12 - ドリル 未習得
  13. 【動画13】 基礎講座第2章1 - 第2章の概要
    【動画13】 基礎講座第2章1 - 第2章の概要 未習得
  14. 【動画14】 基礎講座第2章2 - 文字列とは
    【動画14】 基礎講座第2章2 - 文字列とは 未習得
  15. 【動画15】 基礎講座第2章3 - 文字列操作の基本
    【動画15】 基礎講座第2章3 - 文字列操作の基本 未習得
  16. 【動画16】 基礎講座第2章4 - セルの書式と、値の投入
    【動画16】 基礎講座第2章4 - セルの書式と、値の投入 未習得
  17. 【動画17】 基礎講座第2章5 - 文字列の結合
    【動画17】 基礎講座第2章5 - 文字列の結合 未習得
  18. 【動画18】 基礎講座第2章6 - セルやシートの指定に使われる文字列
    【動画18】 基礎講座第2章6 - セルやシートの指定に使われる文字列 未習得
  19. 【動画19】 基礎講座第2章7 - 日付の扱い
    【動画19】 基礎講座第2章7 - 日付の扱い 未習得
  20. 【動画20】 基礎講座第2章8 - ドリル1
    【動画20】 基礎講座第2章8 - ドリル1 未習得
  21. 【動画21】 基礎講座第2章9 - ドリル2
    【動画21】 基礎講座第2章9 - ドリル2 未習得
  22. 【動画22】 基礎講座第2章10 - ドリル3
    【動画22】 基礎講座第2章10 - ドリル3 未習得
  23. 【動画23】 基礎講座第2章11 - ドリル4
    【動画23】 基礎講座第2章11 - ドリル4 未習得
  24. 【動画24】 基礎講座第2章12 - ドリル5
    【動画24】 基礎講座第2章12 - ドリル5 未習得
  25. 【動画25】 基礎講座第3章1 - マクロを書く人のためのキーボード操作
    【動画25】 基礎講座第3章1 - マクロを書く人のためのキーボード操作 未習得
  26. 【動画26】 基礎講座第3章2 - マクロを書く人のためのショートカットキー操作
    【動画26】 基礎講座第3章2 - マクロを書く人のためのショートカットキー操作 未習得
  27. 【動画27】 基礎講座第3章3 - Left関数、Mid関数、Right関数
    【動画27】 基礎講座第3章3 - Left関数、Mid関数、Right関数 未習得
  28. 【動画28】 基礎講座第3章4 - Len関数、Instr関数
    【動画28】 基礎講座第3章4 - Len関数、Instr関数 未習得
  29. 【動画29】 基礎講座第3章5 - 手書きドリル1(関数の練習)
    【動画29】 基礎講座第3章5 - 手書きドリル1(関数の練習) 未習得
  30. 【動画30】 基礎講座第3章6 - 手書きドリル2(関数の練習)
    【動画30】 基礎講座第3章6 - 手書きドリル2(関数の練習) 未習得
  31. 【動画31】 基礎講座第3章7 - 住所情報を分割する(方針を考える)
    【動画31】 基礎講座第3章7 - 住所情報を分割する(方針を考える) 未習得
  32. 【動画32】 基礎講座第3章8 - 住所情報を分割する(方針の説明)
    【動画32】 基礎講座第3章8 - 住所情報を分割する(方針の説明) 未習得
  33. 【動画33】 基礎講座第3章9 - 住所情報を分割する(実習)
    【動画33】 基礎講座第3章9 - 住所情報を分割する(実習) 未習得
  34. 【動画34】 基礎講座第3章10 - プログラミング実習のまとめ
    【動画34】 基礎講座第3章10 - プログラミング実習のまとめ 未習得
  35. 【動画35】 基礎講座第4章1 - 第4章の概要
    【動画35】 基礎講座第4章1 - 第4章の概要 未習得
  36. 【動画36】 基礎講座第4章2 - ハナコのステップ
    【動画36】 基礎講座第4章2 - ハナコのステップ 未習得
  37. 【動画37】 基礎講座第4章3 - 「For Next構文」を覚える
    【動画37】 基礎講座第4章3 - 「For Next構文」を覚える 未習得
  38. 【動画38】 基礎講座第4章4 - 「For Next構文」の実習
    【動画38】 基礎講座第4章4 - 「For Next構文」の実習 未習得
  39. 【動画39】 基礎講座第4章5 - 「ハナコのステップ」のふりかえり
    【動画39】 基礎講座第4章5 - 「ハナコのステップ」のふりかえり 未習得
  40. 【動画40】 基礎講座第4章6 - If文
    【動画40】 基礎講座第4章6 - If文 未習得
  41. 【動画41】 基礎講座第4章7 - 「If文」の実習
    【動画41】 基礎講座第4章7 - 「If文」の実習 未習得
  42. 【動画42】 基礎講座第4章8 - 比較の条件設定バリエーション
    【動画42】 基礎講座第4章8 - 比較の条件設定バリエーション 未習得
  43. 【動画43】 基礎講座第4章9 - If文のその他の構文その1
    【動画43】 基礎講座第4章9 - If文のその他の構文その1 未習得
  44. 【動画44】 基礎講座第4章10 - If文のその他の構文その2
    【動画44】 基礎講座第4章10 - If文のその他の構文その2 未習得
  45. 【動画45】 補講:複数ファイル間でのデータ転記
    【動画45】 補講:複数ファイル間でのデータ転記 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ