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