【コピペでOK】スプレッドシート複数シートの重複を削除してまとめる方法

複数シートに散らばったデータを、重複をなくして1つのシートにまとめたい…

このよくある課題、あなたもコピペや手作業で貴重な時間を無駄にしてませんか?

実は、その作業、関数を使えば一瞬で自動化できます。

この記事では、あなたのレベルに合わせて3つのステップで解説していきます。

  • まずは基本!コピペですぐに使える関数での解決法
  • 次に応用!少しのカスタマイズで実現する高度な関数の使い方
  • 最終手段!関数の限界を超える完全自動化の紹介

この記事を読み終える頃には、もう面倒な手作業に膨大な時間を費やす必要はありません。

ぜひ、最後までお付き合いください。

自動化出来る作業をまだ手作業でこなしていませんか?

私はGoogleが提供するプログラミングツールである、GAS(Google App Script)と生成AIを活用してお客様の業務を自動化や効率化するサービスを提供しています

もし今の業務の中で

  • 毎回の手作業に手間を感じる
  • もっと業務を効率化したい
  • ルーティン業務を自動化したい

このような不満を抱えてらっしゃるなら是非一度ご連絡ください。

「こんなことできる?」くらい軽めのご相談でも大歓迎です!

目次

まずは基本!コピペですぐに使える関数での解決法

最初から結論です。

複数シートのデータをストレスなくまとめるには、QUERY関数とUNIQUE関数を組み合わせるのが最も確実で実用的です。

なぜ2つの関数を組み合わせる必要があるのでしょうか?

それは、

  • UNIQUE関数だけでは不要なヘッダーや空白行まで拾ってしまう
  • QUERY関数だけではシート間のデータの重複は消せない

という弱点がそれぞれにあるからです。

UNIQUE関数だけの問題点
QUERY関数だけの問題点

そこで、この2つの関数を組み合わせ、お互いの弱点を補い合います

書き方はこうです。

=UNIQUE(QUERY({'シート名'!A2:C; 'シート名'!A2:C}, "where Col1 is not null"))

このままコピペして貼り付けた後に、シート名と列番号だけを変更してください

数式のポイント

{'シート名'!A2:C; 'シート名'!A2:C}

1行目のヘッダーを避けるため、A2から範囲を開始します。

"where Col1 is not null"

1列目(A列)が空白ではない行だけを抽出する命令です。

これにより、データが何も入っていない完全な空白行が結果に含まれるのを防ぎます。

この数式を基本形として覚えておけば、多くの場面で対応できます

この数式の問題点

しかしこの数式にも問題点があります。

それは、ただデータを合体させているだけで、「特定の条件での絞り込み」や「並べ替え」までは行えていない点です。

  • 特定の担当者のデータだけを抽出したい
  • 金額が大きい順に並べ替えたい

もしあなたが、

「ただデータをまとめるだけじゃ物足りない!」

と感じるなら、次のステップに進みましょう。

【応用編】QUERY関数を使いこなし、さらに高度な集計を実現する

ステップ1で、重複したデータを削除しつつ、複数のシートを1つにまとめることに成功しました。

しかし、ここからがQUERY関数の真骨頂です。

この数式を少しカスタマイズするだけで、より柔軟にデータをまとめることが出来ます

そこでこの章では、

  • 必要なデータだけを抽出する「絞り込み」
  • 見やすい順序にデータを整える「並べ替え」

の方法について解説していきます。

特定の担当者のデータだけを抽出する

まずは、B列が特定の担当者のデータだけを抽出してみましょう。

ここではwhere句を使います。

(例)B列(Col2)が「田中」さんのデータだけを対象にしたい場合

=UNIQUE(QUERY({'シート1'!A2:C; 'シート2'!A2:C}, "where Col2 = '田中'"))

  • 文字列(テキスト)を条件にする場合は、'田中'のようにシングルクォーテーション(' ')で囲むのがルールです。
  • C列で絞り込みたい場合はCol3、D列ならCol4のように、列番号に合わせて数字を調整してください。

例2:売上が50,000円以上のデータだけを抽出し、金額順に並べる

次に、絞り込みと並べ替えを同時に行ってみましょう

order by句を追加します。

E列(Col5)の売上が50,000円以上のデータを、金額の大きい順に並べる

=UNIQUE(QUERY({'シート1'!A2:H; 'シート2'!A2:H}, "where Col5 >= 50000 order by Col5 desc"))

  • order by Col5で「E列(Col5)を基準に並べ替える」と命令しています。
  • 末尾のdescは「降順(大きい順)」を意味します。
  • もし金額の小さい順にしたい場合は、descasc昇順(小さい順))に変更してください。

このように、QUERY関数を使いこなせば、関数だけでもかなり高度なデータ集計ができます

【最終手段】関数の限界を感じたらGASの出番!

QUERY関数は非常に強力ですが、それでも運用していく中で以下のような「限界」が見えてきます

データが数十万行レベルになり、関数では処理しきれない…

QUERY関数も万能ではなく、データ量が膨大になるとスプレッドシートがフリーズしたり、エラーになったりします。

シートが毎月増えるたびに、数式を手で修正するのがやっぱり面倒…

{'シート1'!A2:H; 'シート2'!A2:H; 'シート3'!A2:H}のように、シートが増えるたびに手動で追加していく手間は、どうしても残ってしまいます。

「先月のデータを集計」「今週のデータだけを抽出」など、動的な期間指定が難しい…

TODAY()関数などを組み合わせれば不可能ではありませんが、数式が極めて複雑になり、解読やメンテナンスが困難になります。

もし、あなたがこれらの課題に直面しているなら、GAS (Google Apps Script)の導入を検討してみるのがいいかもしれません。

GASとは、スプレッドシートやGmailといったGoogleのサービスを自在に連携させて自動化する専用プログラミング言語です

詳しく知りたい方向けに、こちらで解説してます
(※【法人向け】と書いてますが、個人の方でも読めます)

GASを使えば、これまで解説してきた関数の限界をすべて乗り越えることができます。

GASで出来ること
  • 速い: ボタン一つで、関数なら固まるような大量のデータも一瞬で処理します。
  • 賢い: シートがいくつ増えても自動で認識するため、数式のメンテナンスはもう不要です。
  • 自由: 「先月分集計」「今週分集計」など、あなただけのオリジナル機能を自由に追加できます。

でも、プログラミングなんて自分には無理…

そう感じた方もご安心ください

私は、GASを活用したスプレッドシートの業務自動化サービスを提供しております

今ある面倒な作業を、あなた専用の「自動化ボタン」や「完全自動の仕組み」に変えるお手伝いをいたします

手作業による集計ミスや、複雑な関数のメンテナンスに時間を奪われる日々から解放されませんか?

ご相談は無料です。

まずはお気軽に「こんなことで困っている」とお聞かせください。

まとめ

最後までお読みいただき、ありがとうございます。

この記事では、複数シートに散らばったデータをまとめる方法を、3つのステップで解説しました。

  • 基本の関数(QUERY + UNIQUE)で、空白を気にせずデータを合体させる方法
  • 応用的な関数で、条件に合うデータだけを絞り込んだり、好きな順番に並べ替える方法
  • GASを使い、関数の限界を超えてすべてを「全自動化」する方法

ほとんどの日常業務は、ステップ1と2でご紹介した関数テクニックで、劇的に効率化出来ます。

そして、もし仮に、

  • 扱うデータが膨大になったとき
  • もっと複雑な条件で処理したくなったとき
  • 数式のメンテナンスに限界を感じたとき

このような場合は、GASを使えば解決出来ることを覚えていただけると幸いです。

この記事が、あなたの面倒な作業を一つでも減らし、より創造的な仕事に時間を使うきっかけとなれば嬉しく思います。

私はGoogleが提供するプログラミングツールである、GAS(Google App Script)と生成AIを活用してお客様の業務を自動化や効率化するサービスを提供しています

もし今の業務の中で

  • 毎回の手作業に手間を感じる
  • もっと業務を効率化したい
  • ルーティン業務を自動化したい

このような不満を抱えてらっしゃるなら是非一度ご連絡ください。

「こんなことできる?」くらい軽めのご相談でも大歓迎です!

  • URLをコピーしました!

MASAのアバター MASA 生成AI×GASを活用した"業務効率化コンサルタント"

MASAです。
GASや生成AIを活用して業務の効率化を支援しております。
スプレッドシートを中心にGoogle Workspaceのお役立ち情報も合わせて発信中♪( ´▽`)

目次