セルの範囲の連結(Microsoft Excel)
Excelは、文字列をより長い文字列に結合するという同じ目的を持つ1つのブック関数と1つの演算子を提供します。 CONCATENATE関数とアンパサンド(&)演算子の目的は基本的に同じです。
多くの人は、入力が少なくて済むため、CONCATENATE関数よりもアンパサンド演算子を使用しますが、CONCATENATEは、ある範囲のセルを処理する場合、非常に価値が高くなります。
残念ながら、そうではありませんが、範囲内のすべてのセルを非常にうまく連結する独自のユーザー定義関数を作成できます。
次のマクロについて考えてみます。
Function Concat1(myRange As Range, Optional myDelimiter As String) Dim r As Range Application.Volatile For Each r In myRange Concat = Concat & r & myDelimiter Next r If Len(myDelimiter) > 0 Then Concat = Left(Concat, Len(Concat) - Len(myDelimiter)) End If End Function
この関数には範囲が必要であり、オプションの区切り文字が用意されています。
最後の「If」ステートメントは、連結された文字列から最後の末尾の区切り文字を削除します。 CONCAT1関数を使用すると、CONCATENATEまたはアンパサンド式で必要なメンテナンスなしで、範囲内でセルを追加および削除できます。次のいずれかの方法で関数を呼び出すだけです。
=CONCAT1(C8:E10) =CONCAT1(C8:E10,"|")
関数を呼び出す2番目の方法では、オプションの区切り文字を使用します。この区切り文字は、C8:E10の範囲の連結された各値の間に挿入されます。ただし、これには問題があります。その範囲のセルが空の場合、2つの連続した区切り文字で終わる可能性があります。区切り文字を1つだけにしたい場合は、関数に1つの小さな変更を加える必要があります。
Function Concat2(myRange As Range, Optional myDelimiter As String) Dim r As Range Application.Volatile For Each r In myRange If Len(r.Text) > 0 Then Concat = Concat & r & myDelimiter End If Next r If Len(myDelimiter) > 0 Then Concat = Left(Concat, Len(Concat) - Len(myDelimiter)) End If End Function
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3062)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkセルの範囲の連結。