Excel 自動重複削除を関数で考えてみた
制作環境
Windows 10
WPS Office
はじめに
エクセルにそう詳しい訳ではないので、素人のメモ程度に見てください。
Office 365であればUNIQUE 関数でやりたい事ができるのですが、職場がOffice 2019でUNIQUE 関数が使えないので、使える関数だけでできないか考えて見ました。
ネットで色々検索しましたが、やりたい事について書かれたサイトを見つけられなかったので、ここに残します。
データの重複削除でもやりたい事はできますが、都度手動で削除するのが非効率だったので、自動でできるようにしました。
完成画像
今回の要件
日付のリストの中から、重複を削除して日付の値を取り出します。
例えば発送日の一覧から、発送日毎にデータを分ける時等に使えるデータを作成します。
もちろん一覧の値が変われば、抽出結果も自動で変わります。
準備
適当なサンプルデータの作成をします。
以下のような日付のリストを作成しました。
もちろん日付は重複させます。
処理①
それでは実際に処理をしていきます。
まず日付の中から、重複する日付が最初(1番目)に出てくる箇所を見つけます。
B2セルに以下の関数を記述し、表の一番下まで関数をコピーします。
※コピーの仕方についてはここでは記述しません。ネットで簡単に検索できるのでそちらで調べてください。
=IF(COUNTIF($C$1:C2,C2)=1,1,"")
COUNTIFでC列の値が出てくる回数を出します。
その時、必要なのは最初に出てくる値だけなので、結果の値が1以外は空白を返すようにします。
結果画像
処理②
処理①で出した結果に連番を付けます。
A2セルに以下の関数を記述し、表の一番下まで関数をコピーします。
=IF(B2="","",COUNTIF($B$1:B2,B2))
B2の値が空白の箇所は必要ないので、空白を返すようにします。
それ以外はCOUNTIFの値を返し、連番を作成します。
処理③
右側に新しく表を作成し、そこに抽出結果を表示させます。
抽出にはVLOOKUPを使用する為、検索用の値をまず作成します。
検索は処理2の連番を使用しますので、E2に以下の関数を記述します。
=IF(ROW()-1<=COUNT($A$2:$A$9),ROW()-1,"")
検索用の値はROW()関数で作成します。
その際必要な数だけ作成したいので、COUNT関数で作成回数の条件を付けます。
条件に当てはまらなければ空白を返します。
最終処理
あとはVLOOKUPで値を抽出結果に表示させるだけです。
F2セルに以下の関数を記述し、表の一番下までコピーします。
=IF(E2="","",VLOOKUP(E2,$A$2:$C$9,3,0))
以上で完成です。
エクセルに詳しければもっといいやり方があるかもしれません。
Author And Source
この問題について(Excel 自動重複削除を関数で考えてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Charry/items/b03833bd2e8f75f40b3a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .