Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : 指定なし)
一致している時は○
投稿日時: 21/10/04 12:54:18
投稿者: chokobanana

【前提】2つのセルにあるコードを比較して、一致している時は○とする
 
【条件】
比較するものは「数字-数字」(例:1-11)
セルの書式設定は標準です
 
【式】
今は2つの式で試してますが、両方とも上手くいきません
検査値と同じものが検索範囲にあった時に○とするにはどのようにしたらいいのでしょうか?
 
案1 
=MATCH(RC[-2],RC[2]:R[461]C[2],0)
 
案2     
=IF(ISERROR(VLOOKUP(RC[-2],C[2],1,FALSE)),"×","〇")    

回答
投稿日時: 21/10/04 14:32:07
投稿者: Suzu

案1

引用:
=MATCH(RC[-2],RC[2]:R[461]C[2],0)

これは、何を返す関数となっているのか理解されていますか?
 
検索対象と一致する値が、検索範囲の 先頭から何番目の位置に存在するかを返します。
一致する値が存在しない場合、エラーを返します。
 
エラーであれば、値が無い つまり ×と表示させ
エラー以外の場合、〇 と表示させれば良いです。
 
そういう意味では、
 
案2
引用:
=IF(ISERROR(VLOOKUP(RC[-2],C[2],1,FALSE)),"×","〇")

でも、同じ事にはなります。
 VLOOKUP も 該当する値が無ければ エラーとなります。
 
 
ただし、問題となるのが、
引用:
比較するものは「数字-数字」(例:1-11)
セルの書式設定は標準です

 
Excel にて、セルの書式設定 標準 のセルに対し、
 1-11 の様な値を入力すると 「1月11日」と 自動で変換されませんか?
 つまり、日付扱いのセルとなります。
 
 1月11日 となっているセルの書式をが 日付なり、ユーザー定義型に自動で変わってしまいます。
 そこで、標準に変更すると、「44207」 となり、1-11 とはかけ離れた値となり、
 1-11 はヒットしなくなりますから、〇にはならず、×となってしまいます。
 
 検索対象となる、範囲の 1-11 の様な値は、Excel にて手入力をした値ではありませんよね?
 入力したなら、先の様に、1月11日 と自動で変わってしまいます。
 多分、コピペでデータを持ってきたりしたのではありませんか?
 
 この場合、そのデータ範囲を 文字列 にし、
 検索対象となるセルも 文字列として 対応してください。

回答
投稿日時: 21/10/04 15:19:55
投稿者: んなっと

↓この式自体はあっているようですね。
=IF(ISERROR(VLOOKUP(RC[-2],C[2],1,FALSE)),"×","〇")
 
 
   1 2  3 4   5
2 1-35   〇   2-32
3 1-36   ×   1-34
4         1-35
 
ほかにこんなのも。
=IF(ISNA(MATCH(RC[-2],C[2],0)),"×","○")
 
あとはSuzuさんが書かれたように、
検索値のあるセルと検索範囲の列を文字列に統一しましょう。

投稿日時: 21/10/05 13:02:45
投稿者: chokobanana

Suzuさんのご指摘どおり、コピペでデータを持ってきてました
文字列に変更したら、思っていたことができるようになりました。
 
ご回答いただきました皆様どうもありがとうございました。