私はこの問題をExcelからVBAに渡す方法について混同しています
エクセルでは:
理論:
=IF(cond1, IF(cond2, statement1,statement2),IF(cond2,statement3,statement4))
実際の優れたセル:
=IF($B$2="USD",IF($B$170="USD",B173,B173/B$1),IF($B$170="USD",B173*B$1,B173))
VBAの場合:
If cond1 Then
If cond2 Then
Statement1
Else
Statement2
End if
Elseif cond2 Then
statement3
Else
statement4
End if
大丈夫でしょうか。
回答:
回答№1は1多分これは代替手段として?
Select Case CStr(Range("B2").text = "USD") & CStr(Range("B170").text = "USD")
Case Is = "TrueFalse"
Range("A1").Value = Range("B173").Value / Range("B1").Value
Case Is = "FalseTrue"
Range("A1").Value = Range("B173").Value * Range("B1").Value
Case Else
Range("A1").Value = Range("B173").Value
End Select
もう少しこれで遊んで、あなたはあなたの計算で値としてブール値を使うことによってそれを数学的に小さくすることができます、それはちょうど2行のコードに降りて、例外のために値を設定してそれが基準を満たすならばそれを上書きします。
ここでは、X * Y = X /(1 / Y)という数学を使用します。
これを知っていれば、ブール値を1または0として使用して、その方法で式を操作できます。
私が思いついたのは以下のとおりです:
Range("A1").Value = Range("B173").Value
If CLng(Range("B2").Text = "USD") + CLng(Range("B170").Text = "USD") = -1 Then Range("A1").Value = Range("B173").Value * (((CLng(Range("B2").Text = "USD") * -1) / Range("B1").Value) + ((CLng(Range("B170").Text = "USD") * -1) * Range("B1").Value))
私の最初の提案よりも読んで維持するのはずっと難しいです:)。
回答№2の場合は3
これはあなたが求めていることをするでしょう:
If Range("B2") = "USD" Then
If Range("B170") = "USD" Then
Range("A1").Value = Range("B173").Value
Else
Range("A1").Value = Range("B173").Value / Range("B1").Value
End If
Else
If Range("B170") = "USD" Then
Range("A1").Value = Range("B173").Value * Range("B1").Value
Else
Range("A1").Value = Range("B173").Value
End If
End If
これはA1の値が欲しいと仮定しています。
上記のようにコードをフォーマットすると、読みやすくなります。