C2 の値が列 F にあるかどうかを確認する必要があります。列 F にあり、かつ C2 の最後の桁が「1」である場合は、「不正なバリアント」または空白として返す必要があります。
正しい式を書くにはどうすればいいですか?
したがって、画像でわかるように、品目番号が「新バージョン」列 (別のタブにあります) にあるかどうかを確認する必要があります。品目番号があり、市場が間違ったバージョンを注文している場合は、空白でない場合は「不正なバリアント」と表示する必要があります。品目番号によっては、新バージョン リストに含まれず、注文が分散されます。
答え1
数式の最初の部分で 1 をテストします。こうすることで、列 F に存在するかどうかテストする必要があるのは、値の 10% だけです (データの特性によっては「おそらく」)。必須ではありませんが、計算が高速化される可能性が高く、さらに、IF()
経験に基づいてネストされた構造を数式に使用できるため、より簡単になる可能性があります。
=IF(RIGHT(C1,1)<>1,"You didn't specify what should happen for this.",IF(ISERROR(VLOOKUP(C2,F:F,1,FALSE),"You didn't specify what should happen for this.","Incorrect Variant"))
うーん...なんかぎこちない感じですね。
もっと明確な方法は?
=IF(AND(RIGHT(C2,1)=1,NOT(ISERROR(VLOOKUP(C2,F:F,1,FALSE)))),"Incorrect Variant","You didn't specify what should happen for this.")
したがって、最初の方法を実行すると、スプレッドシートはおそらく高速になりますが、それがどの程度重要か、重要かどうかはここではわかりません。
2 番目の方法を実行すると、読みやすく理解しやすくなると思います。
(もちろん、どちらの場合も、「これに対して何が起こるべきかを指定していません。」については、問題の指定された基準に一致しない失敗につながる値に対して何が起こるかを指定します。)