この記事ではエクセルにて2列のデータを1列にまとめる方法(交互やそのまま)について説明します。
本処理において登場する関数は
・IF関数
・ISEVEN関数
・ROW関数
・MOD関数
・OFFSET関数
・COUNTIF関数
・NOT関数
・ISBLANK関数
であり、これらの組み合わせにより所望の処理を実現します。
それでは実データを用いて、解説します。
目次
2列のデータを1列にまとめる方法(交互:複数列)
2列のデータを「交互」に1列にまとめる場合、IF、ISEVEN、ROWの各関数を使用します。
下記サンプルでは「Data1」「Data2」に存在するデータを交互に取得し、その結果を「DataRst」に書き出すことを想定しています。
セルD2に「=IF(ISEVEN(ROW()), A2, B2)」と入力します。
使用している関数について解説します。
IF関数は場合によって出力する値が変わる関数で、
=IF(論理式,[値が真の場合], [値が偽の場合])
と入力します。
各引数には
・論理式(ISEVEN(ROW)):判定対象のセルの行番が奇数かどうか
・[値が真の場合](A2):論理式が真→奇数である場合に出力する値
・[値が偽の場合](B2):論理式が偽→偶数である場合に出力する値
をそれぞれ指定します。
ISEVEN関数は対象の値が奇数かどうかを判定し、
=ISEVEN(数値)
と入力します。
ここでは行番を判定対象としています。
ROW関数は行番を取得する関数で、
=ROW()
と入力します。
今回は引数を指定する必要はありません。
入力できたら、ENTERを押し、確定させます。
オートフィル機能を利用し、全ての行に数式を入力すれば目的達成です。
エクセルにて2列を1列にまとめる方法【複数列を1列に並べる】
次は「Data1」を並べた後に続けて「Data2」のデータを並べる方法について説明します。
使用する関数はOFFSET、MOD、ROW、COUNTIF、IF、NOT、ISBLANKの計7つです。
具体的にはセルD2に
「=OFFSET($A$2,MOD(ROW()-2,COUNTIF(A:A,”D*A”)),IF(NOT(ISBLANK(A2)),0,1))」
と入力します。
使用している関数について解説します。
OFFSET関数は起点となるセルから○行△列に位置するセルの値を取得する関数で
=OFFSET(参照, 行数, 列数, [高さ], [幅])
と入力します。
各引数には
・参照($A$2):起点となるセル *絶対参照にすること
・行数(MOD(ROW()-2,COUNTIF(A:A,”D*A”))):行番号-2をData1のデータ数で割った際の余り
・列数(IF(NOT(ISBLANK(A2)),0,1)): Data1が空白でない場合は0、空白になったら1
をそれぞれ指定します。
MOD関数は除算を行った際の余りを求める関数で
=MOD(数値, 除数)
と入力します。
COUNTIF関数は指定した範囲において該当するデータ数を求める関数で
COUNTIF(範囲, 検索条件)
と入力します。
本例では、「Dで始まりAで終わる」といったパターンがあるので、検索条件にワイルドカード(*)を使用しています。
NOT関数は論理値を反転させる関数で
=NOT(論理式)
と入力します。
指定した論理式の結果がTRUEならFALSE、FALSEならTRUEを出力します。
ISBLANK関数は指定したセルが空白かどうかを調べる関数で
=ISBLANK(テストの対象)
と入力します。
空白であればTRUE、そうでなければFALSEを出力します。
*ROW及びIFについては前例を参照
ENTERを押して、入力した数式を確定させます。
続いて、オートフィル機能で他の行にコピーすれば完成です。
このようにして、複数列のデータを交互や続けてなどで1列にすることができるのです。
まとめ エクセルにて2列のデータを1列にする方法(交互など:複数列を1列に)
この記事では、エクセルで2列のデータを1列にする方法について説明しました。
少し複雑なロジックが発生していますが、バラバラに書かれたデータを1列にまとめたい、日常の業務ではよくあることではないでしょうか。
この記事が煩わしい作業から解放される1つのヒントとなれば幸いです。