• ベストアンサー

Excel 各シートに同一値があるか確認方法

どなたか良い方法をご教授下さい。。 具体的には、基本シートに製品コードと基本情報があります。 そして各製品の様々な情報が、複数シートに渡り入っています。 組み合わせて集計やデータベースとして扱っています。 そこで基本シートに乗っている製品が、全てのシートにあるかどうか確認したいのです。 情報のアップデートが手作業になるので、不足がないかどうかのチェックです。 vlookupしか思い付かないのですが、複数シートに渡るとなると手間で… マクロを組めると尚良しです。(vba初心者ですが) ちなみに全てのシートで、製品コードは同一列に縦に並んでいます。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>基本シートに乗っている製品が、全てのシートにあるかどうか確認したいのです。 例えば: Sheet1からSheet3まで3枚のシートのA列のどこかに製品名 基本シートのA1セルに記入されている製品名が、シート1,2,3の全てに含まれているかを確認する。 B1セルに =IF(AND(COUNTIF(INDIRECT("Sheet"&ROW(A1:A3)&"!A:A"),A1)),"全てに含まれている","NG") と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力する。 #参考 各シートに製品名が「有るとしても必ず1つしか無い」と保証できるなら、また別のもうちょっと使いやすい計算の方法もありますが。 ヤリタイ事は比較的容易ですが、あなたのエクセルの具体的な姿について何一つ情報がありません。 各シートはそれぞれ具体的にどんな名前で、各シートには具体的にどこ番地にどんな内容で記入されていて、どこのセルの内容とどのセルの内容を照合したいのか、とか。 また、具体的にどういう状況ではどんな計算結果が欲しいのかといった、そもそも「どーなって欲しいのか」もです。 #オマケ >マクロを組めると尚良しです。(vba初心者ですが) 具体的に。いったい全体どんなマクロをイメージしているのかも全く手掛かりがありませんので。 sub macro1()  dim w as worksheet  dim x as variant  x = worksheets("基本シート").range("A1").value  for each w in worksheets   if w.name <> "基本シート" then   if application.countif(w.range("A:A"), x) = 0 then    msgbox "無い"    exit sub   end if   end if  next  msgbox "全てにシートにある" end sub #「実はこーなんです、やっぱりこーでした」とダラダラ引っ張られてもお付き合いできませんので、悪しからず。

ekgn4511
質問者

お礼

説明不足で申し訳ありません。 にもかかわらず、詳細なアドバイスありがとうございます。 試してみます!

その他の回答 (1)

回答No.1

手間とのことですが、そんなに何十枚もシートがある状況ですか? そこまでの数ではなく、そして単に存否の確認さえできればいいという話であれば、(数式ではなく)数式を記入したセルをコピーして、各シートにどんどん貼り付けていけばいいだけですね。VLOOKUP というか、 =countif(基本シート!a:a,a1) といった感じの数式を「基本シート」以外のシートに記入すればいいですね。 もしもシート枚数が非常に多いという場合は、マクロにおいて上式その他の方法によるチェックを行うことも可能です。諸条件が示されれば、それについても追加で回答します。

ekgn4511
質問者

お礼

早速のご回答ありがとうございます! countif、シンプルで良いですね。 シートも6枚ほどで多くはありませんので、その方向で色々試して見たいと思います。

関連するQ&A