- ベストアンサー
Excel 各シートに同一値があるか確認方法
どなたか良い方法をご教授下さい。。 具体的には、基本シートに製品コードと基本情報があります。 そして各製品の様々な情報が、複数シートに渡り入っています。 組み合わせて集計やデータベースとして扱っています。 そこで基本シートに乗っている製品が、全てのシートにあるかどうか確認したいのです。 情報のアップデートが手作業になるので、不足がないかどうかのチェックです。 vlookupしか思い付かないのですが、複数シートに渡るとなると手間で… マクロを組めると尚良しです。(vba初心者ですが) ちなみに全てのシートで、製品コードは同一列に縦に並んでいます。 宜しくお願いします。
- みんなの回答 (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 #「実はこーなんです、やっぱりこーでした」とダラダラ引っ張られてもお付き合いできませんので、悪しからず。
その他の回答 (1)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
手間とのことですが、そんなに何十枚もシートがある状況ですか? そこまでの数ではなく、そして単に存否の確認さえできればいいという話であれば、(数式ではなく)数式を記入したセルをコピーして、各シートにどんどん貼り付けていけばいいだけですね。VLOOKUP というか、 =countif(基本シート!a:a,a1) といった感じの数式を「基本シート」以外のシートに記入すればいいですね。 もしもシート枚数が非常に多いという場合は、マクロにおいて上式その他の方法によるチェックを行うことも可能です。諸条件が示されれば、それについても追加で回答します。
お礼
早速のご回答ありがとうございます! countif、シンプルで良いですね。 シートも6枚ほどで多くはありませんので、その方向で色々試して見たいと思います。
お礼
説明不足で申し訳ありません。 にもかかわらず、詳細なアドバイスありがとうございます。 試してみます!