Excel の数式に読みやすい形式がないため、これが非常に難しくなっています。
次の式を作成する必要があります。
- J2が「いいえ」かどうかを確認します
- そうでない場合は、値を「N/A」に設定します
- その場合、E2 の日付を特定の日付と照合します
- 指定された日付以降の場合、値を「合格」に設定します
- 指定された日付より前の場合、G2 が「キャンセル」で K2 が「いいえ」か、G2 が「無効」で K2 が「はい」かを確認します。
- true の場合、値を「失敗」に設定します
- false の場合、値を「合格」に設定します
Javascript を使用していた場合、次のようになります。
function formulasMakeMyHeadHurt(J2,E2,G2,K2,givenDate){
if(J2=="No"){
if(E2>givenDate){
if((G2=="Cancel"&&K2!="No")||(G2=="Void"!="Yes")){
return "Fail"
}
else return "Pass"
}
else return "Pass"
}
else return "N/A"
}
これが私が試したことです。いくつかの可能性のあるロジックの問題は言うまでもなく、少なくとも1つの構文エラーがあります。数式を書いているときにさまざまな方法で数式をフォーマットしようとしましたが、括弧で迷子になり続け、何がどこにあるのかわかりません。
=IF( ISNUMBER(SEARCH(J20,"No"))
, IF($E20>=DATE(2014,4,10))
,"Pass"
, IF( OR( ISNUMBER(FIND("Void",G20)) , AND(ISNUMBER(FIND("Cancel",G20)), ISERROR(SEARCH("No",K20))) ) )
,"Pass"
,"Fail")
)
,"N/A")
目にやさしい場合は、間隔のない同じ式:
=IF( ISNUMBER(SEARCH(J20,"No")),IF($E20>=DATE(2014,4,10)),"Pass", IF(OR(ISNUMBER(FIND("Void",G20)),AND(ISNUMBER(FIND("Cancel",G20)),ISERROR(SEARCH("No",K20))))),"Pass","Fail")),"N/A")
- この式はどのように書けばよいでしょうか?
- VBA スクリプトを使用した方がよいでしょうか。