- ベストアンサー
2つのSheetの数値を検索したい
エクセルで2つのSheetのデータの個数を検索させたいのですが、 エラー値は空白にしたいので、 =IF(ISNA(VLOOKUP(B2,Sheet2!$A$2:$B$2607,2,FALSE)),"",VLOOKUP(B2,Sheet2!$A$2:$B$2607,2,FALSE)) という式を作ってうまくいったのですが、 この式に新たに同じsheet1の範囲(A2:B300)を追加したいのですが、 うまくいきません。 このB300はB400、B500というように日々増えていきます。 どのような式にすればいいでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>該当するものがない時、初入場の場合に結果が#N/Aとなってしまうのを空白にすることはできるでしょうか? Sheet1に名前がなくて、Sheet2で初めて名前が出てきた方ですよね。 空白でなくて 1 にしなくてはいけないのでは。 Sheet1に名前がないのでVLOOKUP関数でエラーが出ています。 =IF(ISERROR(MATCH(B2,Sheet1!A:A,FALSE),COUNTIF(B2:B$2,B2),今の式) では如何でしょうか MATCH関数でSheet1に名前があるかどうか探させて、エラー(つまりなければ) Sheet2でカウントした数のみ、あれば、今までの式 といった感じです。
その他の回答 (6)
- hallo-2007
- ベストアンサー率41% (888/2115)
>Sheet1には1月までデータがすでに集計してあり、「A列に名前、B列に累計来社数」を入力しています。 >今まではCOUNTIFで12月・1月と計算していたのですが、データが重くなってしまったので、2月からは上記のような形にしました。 既に1月までの集計結果は決定で変更がなければ、集計の式(多分 COUNTIF関数)の部分を値に置き換えれば、再計算しないので軽くなるはずです。 集計結果の式の部分を選択、コピィ ツールバーの編集=>形式を指定して貼り付け=>値にチェック入れてOKします。 数式の結果がそのまま、値になります。 Sheet1が A B C D 名前 1月まで累積入場回数 2月以降入場回数 累積入場回数 C列に=COUNTIF(Sheet2!B:B,A2) D列に=B2+C2 下へコピィの方が集計結果の一覧表としてふさわしくないでしょうか。 >「A列に日付、B列に名前、C列に昨日までの来社累計が入るようにしています。 でしたら、=IF(A2="","",VLOOKUP(B2,Sheet1!A:B,2,FALSE)+COUNTIF(B2:B$2,B2)) で下へコピィするなどは如何でしょうか。
補足
回答ありがとうございます! =IF(A2="","",VLOOKUP(B2,Sheet1!A:B,2,FALSE)+COUNTIF(B2:B$2,B2)) でやってみたら、出来ました。 後は、該当するものがない時、初入場の場合に結果が#N/Aとなってしまうのを 空白にすることはできるでしょうか?
- hallo-2007
- ベストアンサー率41% (888/2115)
勘違いしてたかも、ひょっとしたら、ご希望は =SUMIF(Sheet1!A:A,B2,Sheet1!B:B)+COUNTIF(Sheet2!A:A,B2) Sheet2のA列にある個数を足す >やってみたらできたんですが、検索値をまだ入力していない欄にも >数値が返ってきてしまいます。 何故でしょうかね、集計の数値は関数でだされているかかも? 検索値を入れている部分は計算あっているのですよね。 例えば =IF(B1="","",今の式) としてみては如何でしょうか。
補足
データは日付と来客者名が羅列してあり、毎日累計何回来社しているかの統計を取っています。 Sheet1には1月までデータがすでに集計してあり、「A列に名前、B列に累計来社数」を入力しています。 Sheet2には2月のデータを日付ごとに管理しており、「A列に日付、B列に名前、C列に昨日までの来社累計が入るようにしています。 今まではCOUNTIFで12月・1月と計算していたのですが、データが重くなってしまったので、2月からは上記のような形にしました。 2/1は1月までの集計した数をVLOOKUPでSheet1から累計値をもってくるだけでよかったんですが、2/2からはこの数値に2/1のデータをくっつけたいのです。 来客は毎日の人もいれば、時々の人もいます。 何度もすみません。いい方法があるでしょうか・・・
- hallo-2007
- ベストアンサー率41% (888/2115)
合計の場合は SUMIF関数で調べてみてください。 =SUMIF(Sheet1!A:A,B2,Sheet1!B:B) COUNTIF関数は、個数を調べます。 =COUNTIF(Sheet2!A:B,B2) ところで必要なのは? =SUMIF(Sheet1!A:A,B2,Sheet1!B:B)+COUNTIF(Sheet2!A:B,B2) ということはないですよね。
補足
再度の回答ありがとうございます。 =SUMIF(Sheet1!A:A,B2,Sheet1!B:B)+COUNTIF(Sheet2!A:B,B2) でやってみたらできたんですが、検索値をまだ入力していない欄にも 数値が返ってきてしまいます。 「1」が多いのですが、それ以外の数字もあります。 sheet1の方はすでに合計してある数値を返したい。 その数値にSheet2で新たに出てきたその検索値の個数を足していきたい という感じなのですが・・・
- gyouda1114
- ベストアンサー率37% (499/1320)
>同じ名前のものがあれば、足し算して欲しいのでその個数を返して欲しいのです。 Sheet1及びSheet2のA:B列から同じデータの数を数えるのであれば =COUNTIF(Sheet1!A:B,D2)+COUNTIF(Sheet2!A:B,D2) ”D2は、検査値”
お礼
Sheet1の方は個数を数えるんじゃなくて、合計値を返したいんです。 そしてSheet2の方は個数を返したいという、ちょっと面倒なデータなのです。 Sheet1もSheet2と同じ形式だったのですが、何度も再計算をするので、 ピボットテーブルでそれぞれの名前の合計値を出してあります。 回答ありがとうございました。
- Nouble
- ベストアンサー率18% (330/1783)
申し訳ないですが質問内容と式があってないように思えます おやりになりたいことは ・説明文からすると 対象範囲中に検査値が"いくつ"あるか ・式からすると 対象範囲に検査値があるかないか と読めます 因みにエクセルはフェールを0でツルーを0以外で(※通常は便宜的に1で)管理しています なので =if(2,"成立","不成立") は成立が返されます =if(if(2,"成立","不成立")+if(2,"成立","不成立"),"成立","不成立") も当然ながら成立が返されます 有無だけ知りたければ足せばいいですし 個数を知りたい場合でも足せばいい訳ですから 同じことですよね 後個数が知りたい場合はcountIF関数を使ったり 条件式を適応して評価すると0か1になることを利用して (例:セルA3の値5と等しいか 3 2 4 5 6 1 5 7 5 9 0 2 5 8 ↓ 0 0 0 1 0 0 1 0 1 1 0 0 1 0) 先に条件式を対象範囲すべてに適応しておいて それを集計する などといったやり方が一般的ですね
補足
はい。やりたい事と関数が一致していない事に気が付きました。 NO.1の方の補足にも記載したのですが、別sheetの表は固定されていて、 今後、変わる予定が無く、個数の合計値をB行に表示してあります。 その数値にアクティブSheetの個数を足していきたいのです。 アクティブsheetの方は日々変わるので、検索値には何度も同じ名前がでてくるので、 それを足していきたいです。 分かりづらい説明ですみません。 いい方法があるでしょうか。
- hallo-2007
- ベストアンサー率41% (888/2115)
Vlookup関数の範囲に2つの範囲を指定することは出来ません。 また、両方のシートに検索値が合った場合は、どちらを表示するのでしょうか。 A~B列がデータしかないのであれば、Sheet2!A:B と全ての行を指定しておく方法もあります。 例えば C2セルに =IF(ISNA(VLOOKUP(B2,Sheet2!$A:$B$,2,FALSE)),"",VLOOKUP(B2,Sheet2!$A:$B$2,2,FALSE)) C3セルに IF(ISNA(VLOOKUP(B2,Sheet1!$A:$B$,2,FALSE)),"",VLOOKUP(B2,Sheet1!$A:$B$2,2,FALSE)) と式を2つのセルに入れておいて C4セルで =IF(C3="",C2,C3) といった方法でどちらかを表示させては如何でしょうか。
補足
質問の文がおかしかったようです。 同じ名前のものがあれば、足し算して欲しいのでその個数を返して欲しいのです。 と、ここまで書いて、COUNTIFじゃないとダメな気がしてきました。 今まではCOUNTIFを使っていたのですが、データが多すぎて 再計算を何度もするのが嫌で、1月までのデータをピボットテーブルで まとめたんです。 だから、VLOOKUPで出来たんですね。 COUNTIFでちょっと再トライしてみます。
お礼
何度もありがとうございます。 やっとできました! =SUMIF(Sheet1!$A$2:$A$2606,A1,Sheet1!$B$2:$B$2606)+COUNTIF($A$1:$A$692,A997) これで、「A997」に検索したい名前のSheet1とSheet2(アクティブSheet)の合計値を 反映させることができました! なぜか#N/Aも出なくなりました! 本当に何度もありがとうございました!