EXCEL

エクセルで同じ日付のデータのみを別のシートに抽出する方法

今日の出荷予定表や、今日の予定もしくは、注文書のように、一つの注文番号に対して複数件の項目がある表はよくありますね。

そこで、今日だけデータを抽出して、別にシートに転記したいと思った場合、フィルターで日にちを指定してコピーして貼り付けるということで対応する方も多いのではないでしょうか。

1回のみの作業であれば、良いですがそれが毎日やらないといけない作業だとしんどいですね。

そこで、1つの項目に対して複数のデータが存在し、その全部を別シートに抽出する方法を紹介します。

この記事を読めば、作業時間の短縮にきっとつながりますよ。

方法を簡単に説明

方法はVLOOKUPを使用してデータを抽出する方法を使います。

しかし、VLOOKUPは、検索値の値で同じものがあってはいけません。

そのため、今回のように検索値が、一つでデータが複数の場合は、COUNTIFで各データに対して番号を振り、その番号と連結させることにより重複しない検索値を作ります。

そうすることによりVLOOKUPで読みだすという方法をとります。

データを準備する

下記の図のような受注表があるとします。

COUNTIF関数を入れる列を作る

今回は、受注日ごとでデータを抽出するということを行います。

先に書いたように、この状態ではVLOOKUPは使用できないでの、COUNTIFを使用して同じ日付でもかぶりのない検索値のデータにしていきます。

A列の右に列を足します。
そこに、COUNTIF関数を入力します。今回はB2に関数を入力します。

数式は以下の通りです。

=COUNTIF($A$2:A2,A2)

イコールからカッコまでコピーしてB1に張り付けてください。

その数式をデータが入っている行まで貼り付けます。

この関数で、図のように4月1日のデータは10個あり、B列は1から10が振られていることがわかります。

A2とCOUNTIFをつなげる

B1の列の右に列を挿入します。

その列にA2とB2をつなげる数式を入力します。

数式は

=A2&B2

です。

A2とB2を&でつなげると上記のような表示になります。

C1に日付とCOUNTIFで振られた数値が合わさった数字が入っています。
これをデータが入っている行まで貼り付けます。

VLOOKUP関数が使えるようにする準備はこれで完成です。

C2の列をVLOOKUPの検索値とすることによりデータの抽出ができるようになりました。

日付とCOUNTIFをつなげるセルの表示形式は”標準”にしてください。

シートの作り方によっては、”短い日付形式”になっている可能性もあります。
その表示形式では正しく動作しない可能性もあります。

VLOOKUPで抽出する

ここまでこれば、あとはVLOOKUPで抽出するだけですね。

別シートに抽出用シートを作ります。

おそらくここで読み題したデータを印刷して使うと思うので、そのあたり考慮して作っていきましょう

C1に日付と入力し、D1に日付を入力する欄を作ります。

3行目には項目名を入れます。

A4のセルに以下の数式を入力します。

=IF($D$1=””,””,$D$1&ROW()-3)

このセルが、VLOOKUPの検索値として使います。

そのあとは3行目に入力した項目に合う、VLOOKUP関数を入力していきます。

一つ例を挙げます。

B4には以下の数式を入力します。

=VLOOKUP($A4,データ入力フォーム!$C$2:$I$30,2,FALSE)

※データ入力フォームは最初に作ったデータを入力する用のシートです。

これにより、日付を指定することにより欲しいデータが抽出される仕組みが完成です。

体裁を整える

入力フォームのシートにおいて、B列とC列はデータの入力に直接必要ありませんので、非表示にしても問題ありません。

同様に、印刷フォームのシートの、A列もデータを抽出するためだけに必要なものなので、非表示にします。
(誤って削除しないでください。)

また印刷フォームのシートで、対応するデータがない場合、エラー表示が出ます。

そのときは、IFERROR関数を使用します。

B4を例を挙げると数式は以下のようになります。

=IFERROR(VLOOKUP($A4,データ入力フォーム!$C$2:$I$30,2,FALSE),””)

 

まとめ

今回のように、一つのデータに対して、複数のデータが紐づくという状況は大変多くあります。
例えば、

  • 一つの注文番号に対して注文品目が多数ある。
  • 営業部のに複数人存在する。

など、ありますね。

ただデータを確認するだけであれば、フィルタで選択するとういうやり方で確認できますが、そのデータを印刷したい、それを毎日行うとなると、仕組みを作ってしまったほうがあとあと楽ですね。

また、今回は受注日毎に表示させるように作成しましたが、納期毎で表示させることも可能です。

そのような観点で見ると、今回紹介した方法はとても有効ですね。