1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Excel 自動重複削除を関数で考えてみた

Last updated at Posted at 2022-03-23

制作環境

Windows 10
WPS Office

はじめに

エクセルにそう詳しい訳ではないので、素人のメモ程度に見てください。
Office 365であればUNIQUE 関数でやりたい事ができるのですが、職場がOffice 2019でUNIQUE 関数が使えないので、使える関数だけでできないか考えて見ました。
ネットで色々検索しましたが、やりたい事について書かれたサイトを見つけられなかったので、ここに残します。
データの重複削除でもやりたい事はできますが、都度手動で削除するのが非効率だったので、自動でできるようにしました。

完成画像

完成.jpg

今回の要件

日付のリストの中から、重複を削除して日付の値を取り出します。
例えば発送日の一覧から、発送日毎にデータを分ける時等に使えるデータを作成します。
もちろん一覧の値が変われば、抽出結果も自動で変わります。

準備

適当なサンプルデータの作成をします。
以下のような日付のリストを作成しました。
もちろん日付は重複させます。

t1.jpg

処理①

それでは実際に処理をしていきます。
まず日付の中から、重複する日付が最初(1番目)に出てくる箇所を見つけます。

B2セルに以下の関数を記述し、表の一番下まで関数をコピーします。
※コピーの仕方についてはここでは記述しません。ネットで簡単に検索できるのでそちらで調べてください。

=IF(COUNTIF($C$1:C2,C2)=1,1,"")

COUNTIFでC列の値が出てくる回数を出します。
その時、必要なのは最初に出てくる値だけなので、結果の値が1以外は空白を返すようにします。

結果画像

t2.jpg

処理②

処理①で出した結果に連番を付けます。

A2セルに以下の関数を記述し、表の一番下まで関数をコピーします。

=IF(B2="","",COUNTIF($B$1:B2,B2))

結果画像
t3.jpg

B2の値が空白の箇所は必要ないので、空白を返すようにします。
それ以外はCOUNTIFの値を返し、連番を作成します。

処理③

右側に新しく表を作成し、そこに抽出結果を表示させます。
抽出にはVLOOKUPを使用する為、検索用の値をまず作成します。

表の作成
t4.jpg

検索は処理2の連番を使用しますので、E2に以下の関数を記述します。

=IF(ROW()-1<=COUNT($A$2:$A$9),ROW()-1,"")

検索用の値はROW()関数で作成します。
その際必要な数だけ作成したいので、COUNT関数で作成回数の条件を付けます。
条件に当てはまらなければ空白を返します。

結果画像
t5.jpg

最終処理

あとはVLOOKUPで値を抽出結果に表示させるだけです。

F2セルに以下の関数を記述し、表の一番下までコピーします。

=IF(E2="","",VLOOKUP(E2,$A$2:$C$9,3,0))

完成結果
t6.jpg

以上で完成です。

エクセルに詳しければもっといいやり方があるかもしれません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?