• ベストアンサー

セル範囲内いずれかの数値が他のセル範囲に含まれるかを調べたい

EXCEL2003です。 A1~H1にそれぞれ3桁の数値が入っています。(空欄もあります。) これら範囲内の数値のいずれか一つでも他のセル範囲(次のシートのA1~A50まで)に 含まれていれば結果をJ1に表示したいのですが、可能でしょうか。 当初はJ1に、if(A1が含まれるか,"あった",if(B1が含まれるか,"あった",if(~と、 やってましたが、関数のネストレベルに引っかかってできませんでした。 MATCH関数だと一つの数値が含まれるかどうかは調べられるようですが、 検索したい数値が複数ある場合はやはりセルを分けて別々に評価するしかないのでしょうか?

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.8

NO6です。 =COUNT(A1:H1)を =SUM(IF(LEN(A1:H1),1))又は=SUMPRODUCT((LEN(A1:H1)>0)*1) で如何でしょうか。

nozomi300k
質問者

お礼

ありがとうございます! おかげさまでできました。大変助かりました。 これを機に、自分でも組めるように勉強したいです。 ありがとうございました。

その他の回答 (7)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

#4>(A1~H1の書式は文字列となっていて、3桁の数値も「111」 だったり、「'111」だったりします。) 数値に統一するつもりは無いのでしょうか? A1:H1 だったらさした労力ではないと思いますが・ 例えば、 空きセルに1といれコピーしてA1:H1を選択して 形式を選択して貼り付けから 値、乗算(空白を無視するにチェック)で '111を111 に変換できます。 #4>「count(A1:H1)」の部分がシングルコーテーションだけのセルもカウントしてしまい、うまくいきません。 count の場合は、シングルコーテーションだけのセルは、カウントしません。 また、「次のシートのA1~A50」の状態も、 ' だけだったり、'111 だったり、空白だったりするのでしょうか?

nozomi300k
質問者

お礼

ありがとうございます。 実は数値と言いながら先頭にゼロがある数値であり、他のアプリで読み取る都合上、文字列で使いたいのです。 また、A1:H1ですが、それが何千行もあります・・・。 「次のシートのA1~A50」についてはどうにでもなりますが、元のシートが文字列で扱うのであれば、 やはり文字列になるかと思います。 お手数お掛けします。なにとぞ、ご教示ください。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.6

NO3です。 サイトを見るのが遅れました。次の方法は如何でしょうか。 =IF(SUM(IF(Sheet1!$A$1:$A$50=A1:H1,1))=0,"○",IF(SUM(IF(Sheet1!$A$1:$A$50=A1:H1,1))>=COUNT(A1:H1),"×","△"))

nozomi300k
質問者

お礼

ありがとうございます。A1~H1のセルのデータ格納方法がわかり、 下記のような新たな問題が判明しました。 他の方のお礼にも書きましたが、なにとぞお知恵をご拝借ください。 A1~H1のセルには空白のセルも含まれていますが、よく見ると空白で あってもシングルコーテーションだけが入っていたり、入って なかったりすることがわかりました。 (A1~H1の書式は文字列となっていて、3桁の数値も「111」 だったり、「'111」だったりします。) そのため、「SUMPRODUCT((COUNTIF(Sheet2!$A$1:$A$50,A1:H1)<>0)*1) =COUNT(A1:H1)」の部分がシングルコーテーションだけのセルも カウントしてしまい、うまくいきません。 (文字列セルなので、COUNTはCOUNTAに変更しました。) この状態でも、要件を満たすことは可能でしょうか? (3桁の文字列のあるセルだけでカウントできればいいのですが・・。 あるいは、先にすべてのシングルコーテーションだけを削除する ことは可能でしょうか?)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

=SUM(IF(ISERROR(MATCH(A1:H1,Sheet3!$A$1:$A$50,0)),0,1)) と入れてSHIFT+CTRL+ENTER同時押しで、A1:H1内でSheet3のA1:H50のどれかと一致するセル個数が出ます。 配列数式です。 一致件数が出るセルをA4として、別のセルに=IF(A4=8,"X",IF(A4=0,"○","△")) 式が長くなるので2段階に分けました。

nozomi300k
質問者

お礼

ありがとうございます。A1~H1のセルには空白も含まれているので、 A4=8と評価することはできないのです。 せっかく考えていただいたのに申し訳ございません。 NO.4の方にも書きましたが、状況は下記の通りですので、なにとぞ お知恵をご拝借ください。 A1~H1のセルには空白のセルも含まれていますが、よく見ると空白で あってもシングルコーテーションだけが入っていたり、入って なかったりすることがわかりました。 (A1~H1の書式は文字列となっていて、3桁の数値も「111」 だったり、「'111」だったりします。) そのため、「SUMPRODUCT((COUNTIF(Sheet2!$A$1:$A$50,A1:H1)<>0)*1) =COUNT(A1:H1)」の部分がシングルコーテーションだけのセルも カウントしてしまい、うまくいきません。 (文字列セルなので、COUNTはCOUNTAに変更しました。) この状態でも、要件を満たすことは可能でしょうか? (3桁の文字列のあるセルだけでカウントできればいいのですが・・。 あるいは、先にすべてのシングルコーテーションだけを削除する ことは可能でしょうか?)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

・一つもなければ「○」 ・一つでもあれば「△」 ・全部あれば「×」 =IF(SUMPRODUCT((COUNTIF(Sheet2!$A$1:$A$50,A1:H1)<>0)*1)=COUNT(A1:H1),"×",IF(SUMPRODUCT((COUNTIF(Sheet2!$A$1:$A$50,A1:H1))),"△","○"))

nozomi300k
質問者

お礼

ありがとうございます。早速やってみたのですが・・、 A1~H1のセルには空白のセルも含まれていますが、よく見ると空白で あってもシングルコーテーションだけが入っていたり、入って なかったりすることがわかりました。 (A1~H1の書式は文字列となっていて、3桁の数値も「111」 だったり、「'111」だったりします。) そのため、「SUMPRODUCT((COUNTIF(Sheet2!$A$1:$A$50,A1:H1)<>0)*1) =COUNT(A1:H1)」の部分がシングルコーテーションだけのセルも カウントしてしまい、うまくいきません。 (文字列セルなので、COUNTはCOUNTAに変更しました。) この状態でも、要件を満たすことは可能でしょうか? (3桁の文字列のあるセルだけでカウントできればいいのですが・・。 あるいは、先にすべてのシングルコーテーションだけを削除する ことは可能でしょうか?)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

シート1のA1:A50をシート2のA1:H1で評価し、J1セルにその個数を設定します。 =IF(SUM(IF(Sheet1!$A$1:$A$50=A1:H1,1))>0,"あった","なかった")、入力完了時にshift+ctrl+enterして下さい。

nozomi300k
質問者

お礼

ありがとうございました。できました。 無理を承知で、もう少しお教えください。 今まで一つでもあれば「あった」としましたが、  ・一つもなければ「○」  ・一つでもあれば「△」(つまりある数値とない数値が混在している)  ・全部あれば「×」(つまりある数値ばっかりだった) と表示させることは可能でしょうか? VBでも結構です。お知恵をお貸しください。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

J1 =IF(SUMPRODUCT((COUNTIF(Sheet2!$A$1:$A$50,A1:H1))),"有","無")

nozomi300k
質問者

お礼

ありがとうございました。できました。 無理を承知で、もう少しお教えください。 今まで一つでもあれば「あった」としましたが、  ・一つもなければ「○」  ・一つでもあれば「△」(つまりある数値とない数値が混在している)  ・全部あれば「×」(つまりある数値ばっかりだった) と表示させることは可能でしょうか? VBでも結構です。お知恵をお貸しください。

回答No.1

VBを使用せずでしょうか? 関数だけで評価するならば、 A列の個々に対してCOUNTIF関数を使いJ1に合計値を入れるとか。。。