例えば
A1:I
A2:am
A3:a
A4:boy
それらすべてを単一のセル「Iamaboy」にマージしたい
この例では、4つのセルが1つのセルにマージされていますが、多くのセル(100以上)があるため、A1 & A2 & A3 & A4
を使用して1つずつ入力することはできません。
ConcatenateRange VBA関数を紹介します(名前付けのアドバイスについてJeanに感謝します!)。セルの範囲(任意の次元、任意の方向など)を取り、それらを1つの文字列にマージします。オプションの3番目のパラメーターとして、セパレーターを追加できます(スペース、またはコンマ区切り)。
この場合、これを使用して使用します。
=ConcatenateRange(A1:A4)
Function ConcatenateRange(ByVal cell_range As range, _
Optional ByVal separator As String) As String
Dim newString As String
Dim cell As Variant
For Each cell in cell_range
If Len(cell) <> 0 Then
newString = newString & (separator & cell))
End if
Next
If Len(newString) <> 0 Then
newString = Right$(newString, (Len(newString) - Len(separator)))
End If
ConcatenateRange = newString
End Function
VBAを使用せずにこれを行う場合は、次を試してください。
セルB999には、探している連結テキスト文字列が含まれます。
CONCATENATE
の中では、展開するとTRANSPOSE
を使用できます(F9)次に this のように、周囲の{}
bracketsを削除します
=CONCATENATE(TRANSPOSE(B2:B19))
になる
=CONCATENATE("Oh ","combining ", "a " ...)
最後に独自のセパレータを追加する必要がある場合があります。たとえば、列Cを作成し、その列を転置します。
=B1&" "
=B2&" "
=B3&" "
簡単な場合、関数を作成したり、コードを複数のセルにコピーしたりする必要のないnextメソッドを使用できます。
どのセルにも次のコードを書く
=Transpose(A1:A9)
A1:A9は、結合したいセルです。
F9
を押しますその後、セルには次の文字列が含まれます。
={A1,A2,A3,A4,A5,A6,A7,A8,A9}
ソース: http://www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-Excel/
更新:一部があいまいになる場合があります。セルを離れないということは、セルをエディターモードにすることを意味します。または、セルエディタパネルにいるときにF9を押すことができます(通常はスプレッドシートの上にあります)
VBAの既存のJoin
関数を使用します。 VBA関数はExcelでは公開されないため、Join
をその機能を公開するユーザー定義関数でラップします。最も単純な形式は次のとおりです。
Function JoinXL(arr As Variant, Optional delimiter As String = " ")
'arr must be a one-dimensional array.
JoinXL = Join(arr, delimiter)
End Function
使用例:
=JoinXL(TRANSPOSE(A1:A4)," ")
配列数式として入力(使用 Ctrl-Shift-Enter)。
現在、JoinXL
は1次元配列のみを入力として受け入れます。 Excelでは、範囲は2次元配列を返します。上記の例では、TRANSPOSE
は4×1の2次元配列を4要素の1次元配列に変換します(これは、単一列の2次元配列が与えられたときのTRANSPOSE
の文書化された動作です)。
水平範囲の場合、二重のTRANSPOSE
を実行する必要があります。
=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))
内側のTRANSPOSE
は、1×4の2次元配列を4×1の2次元配列に変換し、外側のTRANSPOSE
は、予想される4要素の1次元配列に変換します。
TRANSPOSE
のこの使用法は、Excelで2D配列を1D配列に変換するよく知られた方法ですが、ひどく見えます。よりエレガントな解決策は、JoinXL
VBA関数でこれを隠すことです。
Excel 2016(そして次のバージョンだと思います)を持っている人のために、 CONCAT 関数が直接あります。 CONCATENATE 関数を置き換えます。
したがって、Excel 2016でそれを行う正しい方法は次のとおりです。
=CONCAT(A1:A4)
生産する:
イアマボーイ
古いバージョンのExcelのユーザーには、他の回答が関連しています。
Mac上のExcel 2011では異なります。私は3つのステップのプロセスとしてそれをしました。
=B1
です。行Nの次の行では、式は=Concatenate(",",A2)
です。次のようになります。QA 、Sekuli 、Testing 、Applitools 、Visual Testing 、Test Automation 、Selenium
=B1
です。 Nに対する他のすべての行の場合、式は=Concatenate(C1,B2)
です。そして、あなたは得る:QA、Sekuli QA、Sekuli、Testing QA、Sekuli、Testing、Applitools QA、Sekuli、Testing、Applitools、Visual Testing QA、Sekuli、テスト、Applitools、ビジュアルテスト、テストオートメーション QA、Sekuli、テスト、Applitools、ビジュアルテスト、テストオートメーション、Selenium
リストの最後のセルが必要なものになります。これは、WindowsまたはMac上のExcelと互換性があります。
CONCATENATE
メソッドを使用して列の値を取得し、SQLステートメントのWHERE IN ()
句をすばやく設定するために、列を引用符で囲んで列で囲みます。
常に=CONCATENATE("'",B2,"'",",")
と入力し、それを選択して下にドラッグすると、=CONCATENATE("'",B3,"'",",")
、=CONCATENATE("'",B4,"'",",")
などが作成されます。その後、その列全体を強調表示し、プレーンテキストエディターに貼り付け、必要に応じて貼り付けて、行の区切りを削除します。これは機能しますが、これも一度限りの処理として、これを常に必要としている人にとっては良い解決策ではありません。