小技集

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ



2026年1月20日【ID:0】

【Excel】1つの数式でセル結合を解除

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


以下の画像のように、一部のセルが結合された表を、たった1つの数式(黄色のセル)で、セルの結合を解除して抽出する方法について紹介していきます。


セル結合を解除して抽出する数式

こちらでは、以下の左側の「セルの結合を含む表」から、セルの結合を含まない状態で右側の表に抽出していきます。

数式に使う関数は、SCAN関数です。
SCAN関数は、指定した範囲のそれぞれの値に対して、1つ前に処理した値を活用し、さらに処理を行った結果を返します。

まずは、先頭の「大カテゴリー」をセルの結合を含まない状態で抽出する場合、SCAN関数を用いて、以下の法則で抽出する必要があります。

大カテゴリーの先頭のセルから順番に確認し、
・セルが空でない場合は、そのまま値を抽出
・セルが空の場合は、1つ前に抽出した値を抽出

これを数式で表現すると、以下のようになります。

=SCAN("",B3:B11,LAMBDA(a,b,IF(b<>"",b,a)))
// "":初期値に、最初の値に関しては1つ前に抽出した値が存在しないため「空」を指定
// B3:B11:処理対象の範囲に、「大カテゴリーの範囲」を指定
// LAMBDA(a,b,IF(b<>"",b,a):処理の内容に、「LAMBDA関数」を指定
// → LAMBDA(1つ前に抽出した値[1], 確認対象の値[2], [1]と[2]を用いた数式)

数式を入力することで、以下のように抽出することができます。

他の項目に関して、単純に「B3:B11(大カテゴリー)」の範囲を広げれば抽出できそうに思えますが、実際は、以下のように上手くいきません。

=SCAN("",B3:D11,LAMBDA(a,b,IF(b<>"",b,a)))

この原因は、SCAN関数が処理する順番にあります。
SCAN関数は、指定された範囲の先頭行の先頭列から隣の列へと処理をします。
そのため、SCAN関数を用いて複数列の範囲を指定する場合は、行と列の値を入れ替える必要があります。

それを実現するには、TRANSPOSE関数を活用します。
SCAN関数に指定する範囲をTRANSPOSE関数で囲って、以下のように指定します。

=SCAN("",TRANSPOSE(B3:D11),LAMBDA(a,b,IF(b<>"",b,a)))

ただ以下のように、処理した結果も行と列の値が入れ替わってしまいます。

そのため、SCAN関数自体もTRANSPOSE関数で囲って、以下のように指定します。

=TRANSPOSE(SCAN("",TRANSPOSE(B3:D11),LAMBDA(a,b,IF(b<>"",b,a))))

これで完成です。
以下のように、セルの結合を解除して抽出することができます。


パソコンで開く場合は、記事の最後に「リンクコピー」があるためご活用ください。

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


小技集-電子書籍販売ページ 小技集-電子書籍販売ページ
メンバー募集 メンバー募集






リンクの共有はこちらから行えます。

  リンクコピー    X Facebook はてなブックマーク Pocket
トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ


- 人気の記事 -



- メンバー限定 [一覧] -



サイト累計閲覧数

7841520

有料動画講座
(買い切り)

Excel完全制覇


ちょっとした機能 便利ツール
【小技集】

【Excel】色の付いたセルを瞬時に集計

【Excel】FILTER関数で存在しない場合に好みのデータを表示

【Excel】入力した数値を0埋め4桁にする

【Excel】複数シートを一括修正

【Excel】各シートのタスク件数を求める

【Excel】瞬時に先頭(末尾)のシートへ移動

【Excel】条件式で日付を正しく判定

【Excel】SWITCH関数で「その他」を表現

【Excel】複数の表を結合して重複を除外する

【Excel】基準日から指定した日数分の日付を表示

【Excel】数式で年齢を求める方法【2選】

【Excel】複数の行(列)の幅を一括で調整

【Excel】重複した値の入力を禁止する

【Excel】VLOOKUP関数で列番号を数えずに抽出

【Excel】XLOOKUP関数で指定した複数項目を抽出

【ExcelVBA】完了タスクを非表示にして着手中タスクを上位表示する

【Excel】ORは「+」、ANDは「*」でも表現できる!?

【Excel】同じセル内の複数の値を集計

【ExcelVBA】誤操作防止!実行ボタンを押したときに確認画面を表示する

【Excel】達成すると山を登る!?目標シートの作成

【Excel】集計結果の「0」の表示非表示を切り替える

【Excel】オートフィルのちょっとした小技

【Excel】数式を劇的に読みやすくする方法

【Excel】予定表から労働時間を色んな形式で求める

【ExcelVBA】ボタン1つで完了タスクを別シートに移動





一覧ページへ

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ