複数のセルに入力されているデータを連結する方法をご紹介しました。
このネタで、CONCATENATE関数で「:」(コロン)を使って範囲指定できそうな気がするけれども、できないということを指摘しました。
でも、やっぱりそういう要望はあるわけです。
このようなないけれどあったら便利そうな機能は、VBA(Visual Basic for Applications)で作ってしまいましょう。
Function ConcatenateRangeText(セル範囲 As Range) As String
Dim rng As Range
Dim ret As String: ret = ""
For Each rng In セル範囲
ret = ret & rng.Text
Next
ConcatenateRangeText = ret
End Function上記のコードをVBE(Visual Basic Editor)を起動して標準モジュールに貼り付ければ、普通のワークシート関数と同様に使えます。
A1セルからA3セルにデータが入力されているときに、A4セルに「=ConcatenateRangeText(A1:A3)」と入力してやれば、A4セルにA1セルからA3セルのデータが連結されて表示されます。
なお、CONCATENATE関数はあくまでデータを連結するので、書式も含んで連結をするにはTEXT関数で書式指定する必要があることをご紹介しました。一般的には書式を含んで結合することの方が多いと思うので、ConcatenateRangeText関数では、For Eachループの中でTextプロパティを取得して連結しています。(その意味も含めて関数の名前を、ちょっと長いですがConcatenateRangeTextとしました。)
CONCATENATE関数同様、値そのものを連結したいのであればFor Eachループの中でValueプロパティを連結してください。その場合関数名はConcatenateRangeValueでしょうか。
- Newer:Amazonアソシエイトセミナー
- Older:文字のロールオーバー−文字色の変更
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » セル範囲を指定して文字列を結合・連結するユーザー定義関数