Excel チュートリアル:列の結合、行、セル
列、行、またはセルを結合する操作は、日常的なExcel 作業で頻繁に使われます。たとえば、名と姓が別々の列にあるデータを1 つの列に統合してフルネームを作成したり、同じ ID を持つ行をまとめて対応する値を集計したり、複数のセルの内容を1 つのセルに結合したりといった使い方が挙げられます。このチュートリアルでは、Excel で列・行・セルを結合するあらゆるシナリオを網羅し、それぞれに最適な解決策をご提案します。
このチュートリアルのナビゲーション |
1 列の結合/行を1 つのセルに結合1.1 列の結合/行をスペース/カンマその他の区切り文字付きで1 つのセルに結合 1.12 CONCATENATE 関数を使用(Excel 2016 以前のバージョン) |
2。同じ ID を持つ行を結合 |
3。セルを結合する3.12 CONCATENATE 関数を使用(Excel 2016 以前のバージョン) 3。Excel 2019 または Excel 365 では、CONCAT 関数または TEXTJOIN 関数を使用します。 |
このチュートリアルでは、いくつかの具体例を通じてさまざまな手法をわかりやすく解説しています。以下の VBA コードや数式をご利用の際は、必要に応じて参照セルを適宜変更してください。また、サンプルファイルをダウンロードすれば、すぐにその手法を実践いただけます。
1 列の結合/行を1 つのセルに結合する
列または行を1 つのセルに結合し、結果をカンマやスペースなどの区切り文字で区切る方法(下記スクリーンショット参照)は、Excel で最も広く使われています。
| 列の結合を1 つのセルに結合 |
![]() |
| 行の結合を1 つのセルに結合 |
![]() |
Excel では、アンパサンド記号(&)を通常、テキストの結合に使用します。
例:名(A 列)と姓(B 列)を結合してフルネームにする
結合結果を表示したいセルを選択し、次のような数式を入力します:
=A2&「 」&B2
この数式では、「&」を使ってテキストを結合しています。A2 と B2 は結合したい2 つのテキストで、「" "」は結果のセル内でそれらを区切るためのスペース(区切り文字)です。カンマを区切り文字にしたい場合は、「"、"」とダブルクォーテーションで囲んで入力してください。
Enterキーを押して結合結果を取得し、オートフィルハンドルを下にドラッグしてマージ結果を一括取得しましょう。
例:No.(行15)と名前(行16)を1 つのセルに結合する
行を1 つのセルに結合したい場合は、数式内のセル参照と区切り文字を必要に応じて調整し、オートフィルハンドルを右にドラッグして結合結果を取得してください。
1.12 CONCATENATE 関数を使用する(Excel 2016 以前のバージョン)
Excel 2016 以前のバージョンをお使いの場合は、CONCATENATE 関数が便利です。
| CONCATENATE 関数の構文 |
| CONCATENATE (text1,[text2],…) |
CONCATENATE 関数の詳細については、次のページをご覧ください:CONCATENATE。
例:氏名(F 列)と住所(G 列)を1 つの列に結合する
結合結果を表示したいセルを選択し、次のような数式を入力します:
=CONCATENATE(F2,",",G2)
この数式では、F2 と G2 が結合したい2 つのテキストで、「"、"」は結果セル内でそれらを区切るカンマです。スペースを区切り文字として使う場合は、「" "」とダブルクォーテーションで囲んで入力してください。
Enterキーを押して結合結果を取得し、オートフィルハンドルを下にドラッグしてマージ結果を一括適用します。
行を結合する場合は、必要に応じてセル参照と区切り文字を調整し、オートフィルハンドルを右にドラッグしてください。
1.13 CONCAT 関数または TEXTJOIN 関数を使用する(Excel 2019 またはExcel 365)
Excel 2019 またはExcel 365 をご利用の場合は、CONCAT 関数や TEXTJOIN 関数がより優れた選択肢となるでしょう。
| CONCAT 関数の構文 |
| CONCAT (text1,[text2],…) |
CONCAT 関数の詳細については、次のページをご覧ください:CONCAT。
CONCAT 関数の使い方は、CONCATENATE 関数と同じです。名と姓がそれぞれ別々の列にある場合、これらを1 つの列に結合するには、次のように数式を使用します:
=CONCAT(A21,「 」,B21)
この数式では、A21 と B21 が結合したい2 つのテキストで、「" "」は結果セル内でそれらを区切るスペース文字です。他の区切り文字を使いたい場合は、ダブルクォーテーションで囲んだ「""」の中にご希望の区切り文字を入力してください。
Enter キーを押して結合結果を取得し、オートフィルハンドルを下にドラッグしてマージ結果を素早く得ましょう。
列を結合する場合とは異なり、行を結合する際は、最初の数式を入力した後、オートフィルハンドルを右に、マージ結果がすべて取得されるまでドラッグする必要があります。
| TEXTJOINT 関数の構文 |
| TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) |
TEXTJOIN 関数の詳細については、次のページをご覧ください:TEXTJOIN。
TEXTJOIN 関数を使用して列の結合または行を結合するには:
=TEXTJOIN(",",TRUE,E21:G21))
この数式では、E21:G21 が結合したい連続した範囲です。「" "」は、結果セル内でテキストを区切るための区切り文字(スペース)です。他の区切り文字を使用する場合は、その文字をダブルクォーテーションで囲んで「""」内に入力してください。「TRUE」という論理値は、結合時に空のセルを無視することを意味します。空白も含めて結合したい場合は、TRUE を FALSE に置き換えてください。
Enter キーを押して結合結果を取得し、オートフィルハンドルを下にドラッグしてマージ結果を得ましょう。
| 空白セルを無視 |
![]() |
| 空白セルを含める |
![]() |
1。メモ帳を使えば、列の結合を実現できます(ただし、行の結合には効果がありません)。
結合したい列の範囲を1 つのセルとして選択し、Ctrl+Cキーを押してコピーします。
2。メモ帳を開き、Ctrl+Vを押して、コピーした範囲を貼り付けます。
3。メモ帳で2 つのテキスト間にあるタブを選択し、Ctrl+Hを押して置換機能を開きます。タブ記号はすでに検索する文字列のテキストボックスに入力されています。
4。置換後の文字列テキストボックスに、結合されたテキストを区切るために使いたい区切り文字を入力し、すべて置換をクリックします。その後、置換ダイアログを閉じます。
5。メモ帳内のテキストを選択し、Ctrl+Cを押してコピーしたら、Excel に戻ってセルを選択し、Ctrl+Vを押してマージ結果を貼り付けます。

拡張:列の結合/行を1 つのセルに改行を区切り文字として結合する
下記スクリーンショットのように、列の結合または行を1 つのセルに改行を区切り文字として結合したい場合:
まず、Excel ではCHAR()関数を使えば、数式内に直接入力が難しい文字(例:CHAR(10)は改行を返す)を簡単に指定できることを理解してください。
上記で紹介した数式に CHAR(10)を組み込んで、改行を区切り文字として列の結合または行を結合します:
アンパサンド記号:
=A49&CHAR(10)&B49
CONCATENATE 関数:
=CONCATENATE(A49,CHAR(10),B49)
CONCAT 関数
=CONCAT(A49,CHAR(10),B49)
TEXTJOIN 関数
=TEXTJOIN(CHAR(10),TRUE,A49:B49)
上記のいずれかの数式を入力した後、結果セルを選択し、ホーム > 折り返して全体を表示をクリックします。![[ホーム] > [折り返して全体を表示する] をクリック](http://cdn.extendoffice.com/images/stories/doc-excel/combine-columns-rows-cells/doc-combine-columns-rows-to-one-17.png)
これで、列が1 つに結合され、各行が改行で区切られた状態になります。
1 列の複数行を1 つのセルに行ごと結合したいだけなら、Excel の「両端揃え」機能がぴったりです。複数行を含む列を選択し、ホーム>フィル>両端揃えをクリックすると、各行の内容がスペース区切りで範囲の先頭セルにまとめて結合されます。
![]() | ![]() |
このセクションでは、以下のスクリーンショットのように、列または行のデータを1 つのセルに結合し、空白セルを無視する方法をご紹介します。
1.21 TEXTJOIN 関数を使用する(Excel 2019 またはExcel 365)
Excel 2019 またはExcel 365 をご利用であれば、幸運にも新しい TEXTJOIN 関数でこの作業を簡単に解決できます。
| CONCATENATE 関数の構文 |
| TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) |
TEXTJOIN 関数の詳細については、以下をご覧ください:TEXTJOIN。
例:名前(A 列)、No.(B 列)、ドメイン(C 列)を1 つのセルに結合してメールアドレスを生成します。ただし、一部の No.は空白の場合があります。
結合結果を表示するセルを選択し、次のように数式を入力してください。
=TEXTJOIN(「」,TRUE,A2:C2)
この数式では、A2:C2 が結合対象のテキストを含む範囲です。「""」は、結果セル内のテキスト間に区切り文字を挿入しないことを示しています。テキスト間に区切り文字を挿入したい場合は、カンマのようにダブルクォーテーションで囲んだ文字(例:"、")を指定してください。「TRUE」という論理値は、結合時に空のセルを無視することを意味します。空のセルも含めて結合したい場合は、TRUE を FALSE に変更してください。
Enterキーを押して最初の結果を得てから、必要に応じてオートフィルハンドルを下または右にドラッグし、すべての結果を生成してください。
Excel 2016 より前のバージョンをご利用の場合は、アンパサンド記号(&)を使ってテキストを1 つずつ連結し、空白は手動でスキップしてください。
結合結果を表示したいセルを選択し、次のような数式を入力します:
=A10&C10
この数式では、「&」はテキストを結合する際に使用され、A10 と C10 が結合対象の2 つのテキストです。カンマを区切り文字として使う場合は、「","」のようにダブルクォーテーションで囲んだカンマを入力し、「&」で2 つのテキストの間に挿入してください。
結合結果を得るには、Enterキーを押してください。その後、次の結合結果を得るために数式の参照を変更します。
Excel 2016 以前のバージョンをご利用で、複数の列や行を空白セルをスキップしながら結合したい場合は、VBA を使って定義済み関数を作成すれば、この作業をスピーディーに解決できます。
1。Alt+F11キーを押すと、Microsoft Visual Basic for Applicationsウィンドウが表示されます。
2。挿入>標準モジュールをクリックして、新しいモジュールを挿入します。![[挿入] > [標準モジュール] をクリックして新しいモジュールを挿入](http://cdn.extendoffice.com/images/stories/doc-excel/combine-columns-rows-cells/doc-combine-columns-rows-skip-blanks-4.png)
3。下記のコードを新しいモジュールにコピー&ペーストし、保存します。
VBA:セルを結合する空白セルを無視する
Function Concatenatecells(ConcatArea As Range) As String
'updateby Extendoffice
For Each n In ConcatArea: nn = IIf(n = "", nn & "", nn & n & "_"): Next
Concatenatecells = Left(nn, Len(nn) - 1)
End Function 
4。ワークシートに戻って、結合結果を表示したいセルを選択し、次の数式を入力してください。
=Concatenatecells(A15:C15)
この数式では、A15:C15 が結合対象のテキストを含む範囲です。「"_"」は VBA コード内で結合結果のテキストを区切る区切り文字として使用されており、必要に応じて変更可能です。
Excel にKutools for Excelがインストールされていれば、行/列/セルの結合と値の保持機能が、さまざまな結合作業をぐっとラクにしてくれます!
1。結合したいセルとマージ結果を配置したいセルを選択します。
2。Kutools > 結合と分割 > 行/列/セルの結合と値の保持をクリックします。
3。表示されたダイアログボックスで、以下のようにオプションを指定します。
1)列を結合するか、行を結合するか、それともすべてのセルを1 つにまとめるかを指定します。
| 列の結合例: | 行の結合例: | 1 つのセルに結合する例: |
![]() | ![]() | ![]() |
2)結合結果内のテキストに使用する区切り文字を指定します。
3)結合結果の配置場所を指定します(「1 つのセルに結合」オプションを選択した場合は無効になります)。
列の結合オプションを選択した場合、結果を「範囲を選択してください」の左側のセル、または右側のセルに配置するように指定できます。
| 左側のセル例: | 右側のセル例: |
![]() | ![]() |
行の結合オプションを選択した場合、結果を「範囲を選択してください」の上のセルまたは下のセルに配置するよう指定できます。option、 you can specify to place the result in the 上のセル of the 範囲を選択してください、 or the 下のセル of the 範囲を選択してください。
| 上のセル例: | 下のセル例: |
![]() | ![]() |
4)マージ結果に対して行う操作を指定します。
4。OKまたは適用をクリックして、結合を完了してください。
| これらのセルの内容を保持する |
![]() |
| これらのセルの内容を削除する |
![]() |
| これらのセルを結合する |
![]() |
この機能の詳細については、列・行・セルをデータ損失なく結合する方法をご覧ください。
Kutools for Excel の詳細については、Kutools for Excelをご覧ください。
Kutools for Excel の30 日間無料トライアルをご希望の方は、今すぐダウンロードしてください。
場合によっては、いずれかの列に空白セルが含まれている2 つの列を結合したいことがあります。たとえば、A 列にユーザー名といくつかの空白セルが、B 列に氏名が含まれているとします。次のスクリーンショットのように、2 つの列を結合する際に、A 列の空白セルを B 列の対応する値で埋めたい場合です。
IF 関数は特定の条件をテストするのに使われます。ここでは、セルが空白かどうかをチェックし、空白であれば別の列の内容で自動的に埋めるために IF 関数を利用できます。
| IF 関数の構文 |
| IF (logical_test, [value_if_true], [value_if_false]) |
IF 関数の詳細については、次をご覧ください:IF 関数
マージ結果を配置したい列の上のセルを選択し、以下の数式をコピーまたは入力します。
=IF(A2=「」,B2,A2)
Enterキーを押して最初の結果を得たら、オートフィルハンドルを下にドラッグしてすべての結果を取得します。
これで、A 列の空白セルのみが B 列の内容で埋められました。
この作業を処理できる VBA コードもご用意しています。
1。Alt+F11キーを押してMicrosoft Visual Basic for Applicationsウィンドウを開き、次に挿入>標準モジュールをクリックして、新しい空のモジュールを作成します。
2。下記のコードを新しいモジュールにコピー&ペーストします。
VBA:空白がある場合に2 つの列をマージする
Sub MergebyBlank()
'UpdatebyExtendoffice20220506
Dim xRg1, xRg2, xRgUser As Range
Dim xRg As Range
Dim xWsh As Worksheet
Dim xCount, xFNum As Integer
Set xRg1 = Range("A:A")
Set xRg2 = Range("B:B")
Set xWsh = xRg1.Worksheet
Set xRgUser = xWsh.UsedRange
Set xRg1 = Intersect(xRgUser, xRg1)
Set xWsh = xRg2.Worksheet
Set xRgUser = xWsh.UsedRange
Set xRg2 = Intersect(xRgUser, xRg2)
xCount = xRg1.Count
If (xCount > xRg2.Count) Then
xCount = xRg2.Count
End If
For xFNum = 1 To xCount
If (xRg1.Item(xFNum).Value = "") Then
If (xRg2.Item(xFNum).Value <> "") Then
xRg1.Item(xFNum).Value = xRg2.Item(xFNum).Value
End If
ElseIf (xRg2.Item(xFNum).Value = "") Then
If (xRg1.Item(xFNum).Value <> "") Then
xRg2.Item(xFNum).Value = xRg1.Item(xFNum).Value
End If
End If
Next
End Sub

コード内では、A:A と B:B がマージ対象の2 つの列です。必要に応じて、これらを適宜変更してください。
3。次に、F5キーを押すか、実行
ボタンをクリックすると、A 列が空白の場合に B 列の値で自動的に埋められます。
2 同じ ID を持つ行の結合
複数の列を含むテーブルがあり、そのうち1 つの列に重複する ID 値が含まれているとします。このチュートリアルでは、同じ ID に基づいてテーブルの行を結合し、いくつかの計算を行う方法を紹介します。
このセクションでは、以下のスクリーンショットのように、同じ ID を持つ行をカンマ区切りで結合する方法をご紹介します。
この作業を効率よく処理できる VBA コードをご紹介します。
1。Alt+F11キーを押してMicrosoft Visual Basic for Applicationsウィンドウを表示し、次に挿入>標準モジュールをクリックして、新しい空のモジュールを作成します。
2。以下のコードを新しいモジュールにコピー&ペーストしてください。
VBA:同じ ID を持つ行の結合
Sub Combine_Rows()
'UpdatebyExtendoffice20220506
Dim xRg As Range
Dim xRows As Long
Dim I As Long, J As Long, K As Long
On Error Resume Next
Set xRg = Application.InputBox("Select Range:", "Kutools For Excel", Selection.Address, , , , , 8)
Set xRg = Range(Intersect(xRg, ActiveSheet.UsedRange).Address)
If xRg Is Nothing Then Exit Sub
xRows = xRg.Rows.Count
For I = xRows To 2 Step -1
For J = 1 To I - 1
If xRg(I, 1).Value = xRg(J, 1).Value And J <> I Then
For K = 2 To xRg.Columns.Count
If xRg(J, K).Value <> "" Then
If xRg(I, K).Value = "" Then
xRg(I, K) = xRg(J, K).Text
Else
xRg(I, K) = xRg(I, K).Text & "," & xRg(J, K).Text 'here uses comma as separator, you can change it to others as you need
End If
End If
Next
xRg(J, 1).EntireRow.Delete
I = I - 1
J = J - 1
End If
Next
Next
ActiveSheet.UsedRange.Columns.AutoFit
End Sub 
3。次に、F5キーを押すか、実行
ボタンをクリックすると、Kutools for Excel のダイアログボックスが表示され、同じ ID を持つ行を結合するテーブルを選択できます。
4。OKをクリックすると、選択された表の行が同じ ID に基づいて結合されます。
列が2 つしかなく、同じ ID を持つ行を結合し、もう一方の列の値を下記のスクリーンショットのようにカンマで区切って表示したい場合、IF 関数が役立ちます。
1。ID 列を選択し、データ > 昇順をクリックして、ID を A から Z の順に並べ替えます。![[データ] > [昇順(AからZ)]](http://cdn.extendoffice.com/images/stories/doc-excel/combine-columns-rows-cells/doc-combine-with-same-id-6.png)
2。次に、並べ替えの警告ダイアログボックスで、選択範囲を拡張するオプションをオンにして、並べ替えをクリックします。
これで、同じ ID がまとめて並べ替えられました。
3。隣接する列に、次のように IF 関数を入力します。
=IF(A17=A18,C17&", "&B18,B18)
この数式では、A17 と A18 は ID 列内の隣接する2 つのセルを示します(A17 は ID 列の見出し)、また B18 はセル A18 に対応するセルです。「,」は値をカンマで区切ることを意味しており、必要に応じてセル参照や区切り文字を変更できます。
4。Enterキーを押して最初の結果を取得し、その後、オートフィルハンドルを下にドラッグしてすべての結果を取得します。
5。隣接する列に移動し、次のように数式を入力します。
=IF(A18<>A19,「Merged」,「」)
この数式では、A18 と A19 は ID 列内の隣接する2 つのセルです。「Merged」を返すのは隣接するセルの値が異なる場合で、それ以外の場合は空白を返します。
6。Enterキーを押して最初の結果を取得し、その後、オートフィルハンドルを下にドラッグしてすべての結果を取得します。
7。最後の数式列(見出しを含む)を選択して、データ>フィルターをクリックします。![[データ] > [フィルター] をクリック](http://cdn.extendoffice.com/images/stories/doc-excel/combine-columns-rows-cells/doc-combine-with-same-id-11.png)
8。フィルターボタンをクリックし、ドロップダウンメニューでMergedのチェックボックスをオンにして、OKをクリックします。
これで、「Merged」の行のみがフィルターされ、フィルターされたデータをコピーして別の場所に貼り付けることができます。
IF 関数の詳細については、こちらをご覧ください:IF。
Excel にKutools for Excelがインストールされていれば、高度な行のマージ機能でこの作業をかんたんに実行できます。
1。テーブルを選択し、Kutools > 結合と分割 > 高度な行のマージをクリックします。
2。高度な行のマージダイアログボックスで、以下の操作を行ってください。
1)ID 列を選択し、主キーに設定します。
2)値を区切り文字付きで結合したい列を選択し、結合をクリックして区切り文字を選択します。
3)OKをクリックします。
これで、同じ ID に基づいて行が結合されました。
高度な行のマージ機能は元のデータを変更するため、使用前に必ずデータのコピーを保存してください。
この機能の詳細については、高度な行のマージをご覧ください。
Kutools for Excel についての詳細については、Kutools for Excelをご覧ください。
Kutools for Excel の30 日間無料トライアルをご利用になりたい方は、今すぐダウンロードしてください。
同じ ID を持つ行を行の結合し、その後値を集計したり他の計算を実行したりしたい場合(下記のスクリーンショット参照)、以下の方法が役立ちます。
列が2 つしかなく、一方の列にテキスト(ID)が含まれ、もう一方の列に集計(例:合計)が必要な値が含まれている場合、Excel の標準機能である統合が大活躍します!
1。結合結果を表示したいセルを選択し、データ>統合をクリックします。![[データ] > [統合] をクリック](http://cdn.extendoffice.com/images/stories/doc-excel/combine-columns-rows-cells/doc-combine-rows-do-calculation-2.png)
2。統合ダイアログボックスで、次の操作を行ってください。
1)必要な集計方法を選択してください。
2)矢印をクリックしてテーブルを選択します。
3)追加をクリックして、「範囲を選択してください」をすべての参照リストに追加します。
4)最上行と最も左の列のチェックボックスをオンにしてください。
5)OKをクリックします。
これで、テーブルが同じ ID に基づいて集計されました。
次の VBA コードを使えば、同じ ID を持つ行を結合し、その後、値を集計できます。
1。Alt+F11キーを押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。次に、挿入 > 標準モジュールをクリックして、新しい空のモジュールを作成してください。![[挿入] > [標準モジュール] をクリックして新しい空のモジュールを作成](http://cdn.extendoffice.com/images/stories/doc-excel/combine-columns-rows-cells/doc-combine-rows-do-calculation-4.png)
2。新しいモジュールに、以下の VBA コードをコピーして貼り付けます。
VBA:重複行を結合して集計
Sub CombineRows()
'Updateby Extendoffice
Dim WorkRng As Range
Dim Dic As Variant
Dim arr As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set Dic = CreateObject("Scripting.Dictionary")
arr = WorkRng.Value
For i = 1 To UBound(arr, 1)
Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
Next
Application.ScreenUpdating = False
WorkRng.ClearContents
WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
Application.ScreenUpdating = True
End Sub 3。次に、F5キーを押すか、実行
ボタンをクリックすると、使用するテーブルを選択するダイアログが表示されます。OKをクリックしてください。
これで、範囲を選択してくださいが同じ値で結合され、集計されました。
VBA は元のデータを変更するため、使用前に必ずデータのコピーを保存してください。
結合して計算を実行したいテーブルに2 列以上ある場合(例:3 列あり、1 列目に重複した商品名があって結合が必要、2 列目に店舗名があってカンマ区切りで結合が必要、最後の列に数値があって1 列目の重複行に基づいて集計が必要)は、下記のスクリーンショットのように、「Kutools for Excel」の「高度な行のマージ」が役立ちます。
1。テーブルを選択し、Kutools > 結合と分割 > 高度な行のマージをクリックします。
2。高度な行のマージダイアログボックスで、以下の操作を行ってください。
1)ID 列を選択し、それを主キーに設定します。
2)値を区切り文字付きで結合したい列を選択し、結合をクリックして区切り文字を選択します。
3)計算を実行したい列を選択し、計算をクリックして、計算方法を選んでください。
4)OKをクリックします。
これで、同じ行が結合され、計算が実行されました。
高度な行のマージ機能は元のデータを変更するため、使用前に必ずデータのコピーを保存してください。
この機能の詳細については、高度な行のマージをご覧ください。
Kutools for Excel についての詳細については、Kutools for Excelをご覧ください。
Kutools for Excel の30 日間無料トライアルをご希望の場合は、今すぐダウンロードしてください。
複数列からなるテーブルで、ある1 つの列に重複する値が含まれている場合、下記のスクリーンショットのように、その列で同じ値を持つ隣接する行を結合するには、どのようにすればよいでしょうか?
Excel にはこの作業を直接実行する標準機能はありませんが、ここではその処理を可能にする VBA コードを提供します。
1。Alt+F11キーを押してMicrosoft Visual Basic for Applicationsウィンドウを表示し、次に挿入>標準モジュールをクリックして、新しい空のモジュールを作成します。
2。新しいモジュールに、以下の VBA コードをコピー&ペーストしてください。
VBA:同じ値を持つ隣接する行を結合する
Sub MergeSameCell()
'Updateby Extendoffice
Dim Rng As Range, xCell As Range
Dim xRows As Integer
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xRows = WorkRng.Rows.Count
For Each Rng In WorkRng.Columns
For i = 1 To xRows - 1
For j = i + 1 To xRows
If Rng.Cells(i, 1).Value <> Rng.Cells(j, 1).Value Then
Exit For
End If
Next
WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge
i = j - 1
Next
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

3。次に、F5キーを押すか、実行
ボタンをクリックしてこの VBA を実行すると、使用するテーブルを選択するダイアログが表示されますので、OKをクリックしてください。
これにより、最初の列で同じ値を持つ隣接する行が範囲を選択してください内で結合されます。
この VBA は元のデータを変更してしまうため、使用前に必ずデータのコピーを保存してください。また、この VBA は選択された表の最初の列で同じ値を持つセルを結合します。
Excel にKutools for Excelがインストールされている場合は、同じセルを結合する機能を使えば、この作業がワンステップで完了します!
同じ値を結合したい列を選択し、次にKutools > 結合と分割 > 同じセルを結合するをクリックします。
これにより、同じ値を持つ隣接するセルが結合されました。
I 結合を解除して値を再入力したい場合は、セルの結合解除と値の入力機能をご活用ください。
この機能の詳細については、同じセルを結合するをご覧ください。
この機能の詳細については、セルの結合解除をご覧ください。
Kutools for Excel についての詳細については、Kutools for Excelをご覧ください。
Kutools for Excel の30 日間無料トライアルをご希望の場合は、今すぐダウンロードしてください。
3 セルの結合
複数行・複数列からなる範囲を1 つのセルに結合する方法として、ここでは4 つの手法をご紹介します。
例:マージ範囲 A1:C3
Excel では、アンパサンド記号(&)を通常、テキストの結合に使用します。
結合結果を配置したいセルを選択し、次のような数式を入力します:
=A1&", "&B1&", "&C1&", "&A2&", " &B2&", "&C2&", "&A3&", "&B3&", "&C3
この数式では、「&」を使ってテキストを結合し、「", "」(カンマ+スペース)が結果セル内の2 つのテキストを区切る区切り文字として使われています。他の区切り文字を使いたい場合は、ダブルクォーテーションで囲んだ任意の区切り文字を入力してください。
Enterキーを押すと、結合結果が得られます。
3.12 CONCATENATE 関数を使用する(Excel 2016 以前のバージョン)
Excel 2016 以前のバージョンをご利用の場合、CONCATENATE 関数が役立ちます。
| CONCATENATE 関数の構文 |
| CONCATENATE (text1,[text2],…) |
CONCATENATE 関数の詳細については、次をご覧ください:CONCATENATE
結合結果を配置したいセルを選択し、次のような数式を入力します:
=CONCATENATE(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)
この数式では、A1、B1…、C3 は結合したいテキストです。「", "」は結果セル内で2 つのテキストを区切る区切り文字(カンマ+スペース)です。他の区切り文字を使用する場合は、その文字をダブルクォーテーションで囲んで入力してください。
次に、Enterキーを押して結合結果を取得しましょう。
3。13 CONCAT 関数または TEXTJOIN 関数を使用する(Excel 2019 またはExcel 365)
Excel 2019 またはExcel 365 をご利用の場合は、CONCAT 関数および TEXTJOIN 関数の方が適している場合があります。
| CONCAT 関数の構文 |
| CONCAT (text1,[text2],…) |
CONCAT 関数の詳細については、次をご覧ください:CONCAT。
CONCAT 関数の使い方は CONCATENATE 関数と同じです。別々の2 列にある名と姓を1 列に結合する場合、次のように数式を使用します:
=CONCAT(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)
この数式では、A1、B1…、C3 が結合したいテキストです。「"、 "」は結果セル内で各テキストを区切る区切り文字(カンマ+スペース)として使われます。他の区切り文字を使いたい場合は、その文字をダブルクォーテーションで囲んで入力してください。
次に、Enterキーを押して、結合結果を取得します。
| TEXTJOIN 関数の構文 |
| TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) |
TEXTJOIN 関数の詳細については、以下をご覧ください:TEXTJOIN。
TEXTJOIN を使用して列の結合または行を結合する場合:
=TEXTJOIN(", ",TRUE,A1:C3)
この数式では、A1:C3 が結合対象の連続した範囲です。「"、 "」は、結果セル内のテキストを区切るための区切り文字(カンマ+スペース)です。他の区切り文字を使用する場合は、その文字をダブルクォーテーション(「」)で囲んで入力してください。「TRUE」という論理値は、結合時に空白セルを無視することを意味します。空白セルも含めて結合したい場合は、TRUE を FALSE に置き換えてください。
次にEnterキーを押して結合結果を取得します。
改行を区切り文字として使用するには、数式内に CHAR(10) を使います。たとえば、`=TEXTJOIN(CHAR(10)、TRUE,A1:C3)` と入力し、結果が表示されるセルの書式を「折り返して全体を表示する」に設定してください。
3.14 列の結合/行/セルをデータを失うことなく1 つのセルに結合する
Excel にKutools for Excel がインストール済みなら、行/列/セルの結合と値の保持機能でこの作業をサッと完了できます。
1。結合したいセル範囲を1 つのセルにまとめるには、まずその範囲を選択し、次にKutools>結合と分割>行/列/セルの結合と値の保持をクリックします。
2。表示されたダイアログで、必要に応じて1 つのセルに結合するにチェックを入れ、区切り文字を設定してから、OKをクリックします。
これにより、セルが指定された区切り文字で1 つのセルに結合されます。結合後のセルに表示しきれないほど多くの内容が含まれる場合は、ホームタブにある折り返して全体を表示するボタンをクリックして、すべての内容を表示してください。
この機能の詳細については、列・行・セルをデータを失うことなく結合する「列と行の結合」をご覧ください。
Kutools for Excel についての詳細については、Kutools for Excelをご覧ください。
Kutools for Excel の30 日間無料トライアルをご利用になりたい場合は、今すぐダウンロードしてください。
| セルを転置して単一列にする |
![]() |
| セルを転置して単一行にする |
![]() |
3.21 範囲に名前を付けて INDEX 関数を使用する(単一列のみ対応)
セル範囲を単一の列に転置したい場合は、その範囲に名前を付けてから INDEX 関数をご活用ください。
1。セル範囲を選択して右クリックし、コンテキストメニューから名前の定義をクリックします。
2。表示された新しい名前ダイアログで、名前テキストボックスに名前を入力して、OKをクリックします。
3。範囲に名前を付けた後、転置データを配置したいセルを選択し、次のように INDEX 関数を使用します:
=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)
INDEX 関数の詳細については、こちらをご覧ください。
4。Enterキーを押して、#REF!エラーが表示されるまでオートフィルハンドルを下にドラッグし、この数式を入力します。
5。エラー値を削除すると、セル範囲が1 つの列に結合されます。
セルを1 つの列に結合するには、次の VBA コードもご利用いただけます。
1。Alt+F11キーを押してMicrosoft Visual Basic for Applicationsウィンドウを表示し、次に挿入>標準モジュールをクリックして、新しい空のモジュールを作成します。
2。以下の VBA コードを空のモジュールにコピー&ペーストしてください。
VBA:変換範囲を列に結合する
Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
Rng.Copy
Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

3。次に、F5キーを押すか、実行
ボタンをクリックすると、セル範囲を選択するダイアログが表示されますので、OKをクリックしてください。
4。結果を配置するセルを選択するための別のダイアログボックスが表示されます。「OK」をクリックしてください。
セルを1 行に結合したい場合、Excel にはその機能が標準で搭載されていません。しかし、Kutools for Excelがインストールされていれば、その範囲の変換機能を使えば、セル範囲を1 列または1 行に簡単に変換できるだけでなく、1 行または1 列をセル範囲に変換することも可能です!
1。セル範囲を選択し、「Kutools > Range > 範囲の変換」をクリックします。
2。範囲の変換ダイアログボックスで、必要に応じて「範囲を単一列に変換」または「範囲を単一行に変換」オプションをオンにして、「OK」をクリックしてください。
3。結果を配置するセルを選択するダイアログボックスが表示されます。「OK」をクリックしてください。
これで、セルが正常に変換されましたのセル範囲が1 行または1 列になりました。
この機能の詳細については、「範囲の変換」をご覧ください。
Kutools for Excel についての詳細については、Kutools for Excelをご覧ください。
Kutools for Excel の30 日間無料トライアルをご利用になりたい場合は、今すぐダウンロードしてください。
複数列からなる表に重複データが含まれている場合、以下のスクリーンショットのように、重複を除いてすべての列のデータを1 列にまとめるにはどうすればよいでしょうか?
ここでは、この作業を行うための3 つの異なる方法をご紹介します。
Excel では、この作業を解決する一般的な方法として、列を1 つずつコピー&ペーストし、その後で重複する値を削除します。
1。最初の列を選択して、Ctrl+Cキーを押してコピーします。次に、貼り付け先のセルを選択し、Ctrl+Vキーを押して貼り付けます。
2。その後、手順1 を繰り返して他の列をコピーし、最初の列の下にペーストします。
3。積み上げた列を選択し、「Data > 重複を削除」をクリックします。表示されたRemove Duplicateダイアログボックスで列名を確認し、「OK」をクリックしてください。

4。重複データが削除されたことを知らせるダイアログボックスが表示されます。「OK」をクリックして閉じると、積み上げられた列には一意の値だけが残ります。
数百もの列がある場合、1 つずつコピー&ペーストするのは非常に時間がかかります。しかし、Excel にKutools for Excelがインストールされていれば、範囲の変換機能ですばやくセル範囲を1 列に変換でき、その後、Excel の重複を削除機能を適用できます。
列の範囲を選択して、「Kutools > Range > 範囲の変換」をクリックしてください。
次に、「範囲を単一列に変換」オプションをオンにして「OK」をクリックし、積み上げた列を配置するセルを選択してください。
その後、重複を削除を適用して重複する値を削除します。
この機能の詳細については、範囲の変換をご覧ください。
Kutools for Excel についての詳細については、Kutools for Excelをご覧ください。
Kutools for Excel の30 日間無料トライアルをご利用になりたい場合は、今すぐダウンロードしてください。
さらに、この作業を解決するための VBA コードを以下に示します。
1。Alt+F11キーを押してMicrosoft Visual Basic for Applicationsウィンドウを表示し、次に挿入>標準モジュールをクリックして、新しい空のモジュールを作成します。
2。以下のコードを新しいモジュールにコピー&ペーストしてください。
VBA:重複を除いて列を1 列に積み上げる
Sub FindUniques()
'UpdatebyExtendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set dic = CreateObject("Scripting.Dictionary")
For j = 1 To InputRng.Columns.Count
For i = 1 To InputRng.Rows.Count
xValue = InputRng.Cells(i, j).Value
If xValue <> "" And Not dic.Exists(xValue) Then
OutRng.Value = xValue
dic(xValue) = ""
Set OutRng = OutRng.Offset(1, 0)
End If
Next
Next
End Sub

3。その後、F5キーを押すか「Run
」ボタンをクリックすると、積み上げ対象の列を選択するダイアログボックスが表示されます。「OK」をクリックしてください。
4。次に表示される2 つ目のダイアログボックスで、積み上げた列を配置したいセルを選択し、「OK」をクリックします。
これで、列が一意の値を含む1 列に積み上げられました。
2 つの列があり、そのうち1 つが「mm/dd/yyyy」などのカスタム日時書式で設定されている場合、通常の方法でこれらを結合すると、以下のスクリーンショットのようにカスタム書式が失われてしまいます。
ここでは、セルを結合しながら書式を保持するいくつかの方法をご紹介します。
TEXT 関数は、数値を指定した書式でテキストに変換する際に使用されます。ここではまず、数値を含むセルを目的の書式に変換し、その後「&」記号や CONCATENATE 関数、CONCAT 関数、TEXTJOIN 関数を使って他のセルと結合します。
セルを1 つに結合する一般的な方法の詳細については、1.1をご確認ください。
| TEXT 関数の構文 |
| TEXT (value, format_text) |
TEXT 関数の詳細については、
ここでは、CONCAT 関数の中に TEXT 関数を組み込む例をご紹介します。
次の数式をコピーし、結合結果を表示したいセルに貼り付けてください。
=CONCAT(TEXT(A2,「mm/dd/yyyy hh:mm」),「 」,B2)
この数式では、A2 は書式を保持したいセル、「mm/dd/yyyy hh:mm」は適用する書式、B2 は結合するもう一方のセルです。「" "」は値の間にスペースを挿入することを意味します。セル参照や書式、区切り文字は必要に応じて変更できます。
Enterキーを押して、オートフィルハンドルを下にドラッグし、この数式を他のセルに適用しましょう。
1。結合したいセルを含む表を選択し、Ctrl+Cを押してコピーしてください。
2。空のWord 文書を開き、Ctrl+Vを押して貼り付けましょう。文書内の表をクリックすると、表の右上に十字アイコンが表示されます。
3。「レイアウト」タブをクリックし、「テキストに変換」()データグループ内)を選択します。表示される表をテキストに変換ダイアログボックスで、列の区切り文字を指定して「OK」をクリックしてください。

これで、Word の表の内容がテキストに変換されました。
4。変換されたテキストを選択し、Ctrl+Cを押してコピーします。その後、Excel に戻って空のセルを選択し、Ctrl+Vを押して結合結果を貼り付けましょう。
3.43 便利なツール「Combine without losing data」を使用する
最も効率的な方法は、Kutools for Excelの行/列/セルの結合と値の保持機能を使うことです。この機能を使う際に、フォーマット済みの値を使用するチェックボックスをオンにするだけで、結合後の結果が元のデータの書式をそのまま保持します。
1。結果を配置するセルを含むテーブルを選択し、Kutools > 結合と分割 > 行/列/セルの結合と値の保持。
2。表示されたダイアログボックスで、必要に応じて結合操作を指定し、フォーマット済みの値を使用するチェックボックスのチェックを外してください(デフォルトではこのオプションが有効になっています)。その後、OKをクリックします。
これでデータが結合され、書式もそのまま保持されました。
この機能の詳細については、以下をご覧ください。セルのデータを失うことなく、列や行を結合。
Kutools for Excel について詳しくは、以下をご覧ください。Kutools for Excel。
Kutools for Excel の{module745}日間無料トライアルをご利用になりたい場合は、今すぐダウンロードしてください。
以下のスクリーンショットのように、年、月、日がそれぞれ別の列に含まれるテーブルがあり、これらの列を結合して日付を生成する作業を行います。
DATE 関数は、年・月・日を指定して日付を作成する際に使用されます。
| DATE 関数の構文 |
| DATE( year, month, day ) |
DATE 関数の詳細については、「DATE 関数」をご参照ください。
次の数式をコピーし、日付を表示したいセルに貼り付けてください。
=DATE(A2,B2,C2)
この数式では、A2、B2、C2 はそれぞれ年、月、日の値が入力されたセルです。
Enterキーを押して最初の日付を入力し、その後、オートフィルハンドルを下にドラッグすれば、すべての日付が自動的に入力されます。
その他のExcel チュートリアル:
複数のブック/ワークシートを1 つに統合
このチュートリアルでは、あなたが遭遇する可能性のあるほぼすべての結合シナリオを網羅し、それぞれに最適なプロフェッショナルな解決策を提供します。
テキスト、数値、日付のセルを分割する(複数列に分ける)
このチュートリアルは3 つのパートに分かれており、テキストセル、数値セル、日付セルの分割方法をそれぞれ詳しく解説しています。各パートでは実際の例をもとに、同じ問題に直面した際にすぐに活用できる対処法をお伝えします。
Excel で複数セルの内容をデータを失うことなく結合する方法
このチュートリアルでは、セル内のテキストや数値を特定の位置から抽出するさまざまな方法をご紹介します。データを失うことなく、正確に必要な情報を取り出すコツをぜひマスターしてください!
Excel で2 つの列を比較して一致と相違を確認する方法
本記事では、2 つの列を比較する際に遭遇する可能性のあるほとんどのシナリオを網羅しています。ぜひご活用ください!
最高のオフィス生産性ツール
Kutools for Excel は、あなたの課題のほとんどを解決し、生産性を80% 向上させます
- スーパー数式バー(複数行のテキストや数式を簡単に編集可能);リーディングレイアウト(多数のセルを簡単に読み書き可能);フィルタリング範囲に貼り付け…
- 結合セル/行/列とデータ保持;セルの分割コンテンツ;重複行を結合して合計/平均を計算…重複の入力を防止セル;範囲を比較…
- 重複または一意の行を選択;空白行を選択(すべてのセルが空);スーパー検索とあいまい検索多数のワークブック内で実行;ランダム選択…
- 正確にコピー複数セルを数式参照を変更せずに移動;複数シートへの参照を自動作成;箇条書きの挿入、チェックボックスなど…
- お気に入りの数式を保存して素早く挿入、範囲、チャート、画像;セルの暗号化パスワード付きで保護;メーリングリストの作成メール送信など…
- テキストの抽出、テキストの追加、特定の位置の文字を削除、スペースを削除;データページ統計を作成・印刷;セルの内容とコメントを相互変換…
- スーパーフィルター(フィルタースキームを保存し、他のシートに適用可能);高度なソート月/週/日、頻度などでグループ化;特殊フィルタ太字、イタリック体などで強調表示…
- ワークブックとワークシートを統合;テーブルのマージをキーカラムに基づいてマージ;データの分割を複数のシートに分割;xls、xlsx、PDF を一括変換…
- PivotTable を以下でグループ化:週番号、曜日など…ロック解除済みセルと選択範囲をロックを異なる色で表示;数式/名前を持つセルをハイライト表示…

- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効化。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 生産性が50%向上し、毎日数百回のマウスクリックを削減できます!






![[ホーム] > [塗りつぶし] > [両端揃え] をクリック](http://cdn.extendoffice.com/images/stories/doc-excel/combine-columns-rows-cells/doc-combine-columns-rows-to-one-19.png)












