10/03/2022

Excel。列方向の重複を除いて、行方向の表で抽出するには、どうしたらいい【Remove duplicates】

Excel。列方向の重複を除いて、行方向の表で抽出するには、どうしたらいい

<INDEX+ROW関数>

重複しているデータを除いた表を作る場合には、データタブの「重複の削除」をつかうと効率的に作成することができます。


ただし、この「重複の削除」は行方向。


つまりレコードが対象になっているので、列方向であるフィールド方向に重複したデータを除くのは、なかなか面倒な作業といえます。


次の表をつかって、やりたいことを説明していきます。

 

1行目のB1:G1のデータから重複したデータを除いたものを、A4を起点とした表をつくりたいというのが、やりたいことです。


列方向では、「重複の削除」をつかうことはできません。

そこで、先に、列方向のデータを行方向にする作業をしていきます。


列方向を行方向に変換するには、「INDEX関数」をつかうと、手早く処理することができます。


A4に次の数式を設定します。

=INDEX($B$1:$G$1,1,ROW(B1))


あとは、必要なデータだけオートフィルで数式をコピーします。


 

INDEX関数の説明は後述するとして、重複データの削除をおこなっていきます。


このまま、データタブの「重複の削除」をおこなってしまうと、一瞬成功したように思えるのですが、内容は数式なので、結果うまくいきません。


まずは、INDEX関数で行列を入れ替えたデータを数式から値として変更します。


A4:A9を範囲選択して、コピーしたら、そのまま貼り付けの「値」をクリックします。


あとは、データタブの「重複の削除」を実行したら、完成ですね。


それでは、INDEX関数を確認しておきましょう。


最初の引数「配列」には、$B$1:$G$1と設定します。

オートフィルで数式をコピーするので、絶対参照も忘れずに設定します。


2番目の引数の行番号は、行をずらすとかしないので、「1」と設定します。


3番目の引数の列番号は、「1」「2」「3」…と列参照をずらしていきたいわけですね。

そこで、ROW関数をつかうと、オートフィルで数式をコピーするのと連動して「1」「2」「3」…と数値を変えることができます。


そこで、ROW(B1)と設定しました。

なお、ROW(A1)でもOKです。


INDEX関数はアイディアによって色々活用することができますので、試してみるといいかもしれませんね。