例えば
A1:I
A2:am
A3:a
A4:boy
それらすべてを1つのセル「Iamaboy」にマージしたい
この例は、4つのセルが1つのセルにマージされることを示していますが、セルが多数(100を超える)、A1 & A2 & A3 & A4
何ができるかを使用して1つずつ入力できません。
例えば
A1:I
A2:am
A3:a
A4:boy
それらすべてを1つのセル「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
ConcatenateRange
!愚かなExcelのCONCATENATE
関数は、入力として別々の引数として個々の細胞のリストだけを範囲を受け入れることはありません...
Else newString = newString & (separator & Space(1))
結果の文字列で固定幅を保持する必要があるため、で変更しました。
VBAなしでこれを実行したい場合は、次のことを試すことができます。
セルB999には、探している連結されたテキスト文字列が含まれます。
単純なケースでは、関数を作成したり、コードを複数のセルにコピーしたりする必要のない次のメソッドを使用できます。
任意のセルに次のコードを記述します
=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- - )。ShiftEnter
現在、JoinXL
入力として1次元配列のみを受け入れます。Excelでは、範囲は2次元配列を返します。上記の例でTRANSPOSE
は、4×1の2次元配列を4要素の1次元配列に変換します(これは、TRANSPOSE
単一列の2次元配列が供給された場合の動作が文書化されています)。
水平範囲の場合、2倍にする必要がありますTRANSPOSE
:
=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))
内側TRANSPOSE
は1×4の2次元配列を4×1の2次元配列にTRANSPOSE
変換し、外側は予想される4要素の1次元配列に変換します。
この使用法TRANSPOSE
は、Excelで2D配列を1D配列に変換するよく知られた方法ですが、ひどいように見えます。より洗練された解決策は、これをJoinXL
VBA関数で隠すことです。
Excel 2016をお持ちの方(そして次のバージョンだと思います)には、CONCATENATE関数に代わるCONCAT関数が直接あります。
したがって、Excel2016でそれを行う正しい方法は次のとおりです。
=CONCAT(A1:A4)
生成されます:
イアマボーイ
古いバージョンのExcelのユーザーの場合、他の回答が関連しています。
CONCAT
機能は
Mac上のExcel2011の場合は異なります。私はそれを3つのステップのプロセスとして行いました。
=B1
です。行Nの次の行の場合、式は=Concatenate(",",A2)
です。最終的に:QA 、セクリ 、テスト 、Applitools 、ビジュアルテスト 、テスト自動化 、セレン
=B1
です。Nまでの他のすべての行の場合、式は=Concatenate(C1,B2)
です。そして、あなたは得る:QA、Sekuli QA、Sekuli、テスト QA、Sekuli、テスト、Applitools QA、Sekuli、テスト、Applitools、ビジュアルテスト QA、Sekuli、テスト、アプリケーションツール、ビジュアルテスト、テスト自動化 QA、Sekuli、テスト、Applitools、ビジュアルテスト、テスト自動化、Selenium
リストの最後のセルは、必要なものになります。これは、WindowsまたはMac上のExcelと互換性があります。
=CONCATENATE(B1;",";A2)
ます。そして、あなたはすべての行のセルの右下のドットをドラッグする必要があり、最後の値が結果になります
このCONCATENATE
メソッドを使用して列の値を取得しWHERE IN ()
、SQLステートメントの句にすばやく入力するために、列を間に挟んで引用符で囲みます。
私はいつもただ入力=CONCATENATE("'",B2,"'",",")
してからということを選択してドラッグ、それを下に、作成する=CONCATENATE("'",B3,"'",",")
、=CONCATENATE("'",B4,"'",",")
などその列全体をハイライトし、プレーンテキストエディタに貼り付け、必要に応じてバックペーストし、これ行の分離をストリッピングコピーします。それは機能しますが、繰り返しになりますが、これは1回限りの取引と同様に、これを常に必要とする人にとっては良い解決策ではありません。
これは本当に古い質問だと思いますが、私は同じことをしようとしていて、「TEXTJOIN」と呼ばれるExcelの新しい式に出くわしました。
質問については、次の式が問題を解決します
=TEXTJOIN("",TRUE,(a1:a4))
「TEXTJOIN」の署名は、TEXTJOIN(delimiter、ignore_empty、text1、[text2]、[text3]、...)として説明されています。