1

セルには、、、、または(文字列の)のいずれA1かがあります。<<=>>=

セルB1には、intのしきい値があります。

からA3、intの値があります。

+---+-----+----+
|   | A   | B  |
+---+-----+----+
| 1 | <   | 15 |
| 2 |     |    |
| 3 | 10  |    |
| 4 | 20  |    |
| 5 | ... |    |
+---+-----+----+

の値は、ブール演算子( )としきい値()を尊重する場合にのみA3コピーする必要があります。それ以外の場合は、である必要があります。もちろん、/ 、/なども同様です。B3A1B1B3#N/AA4B4A5B5

その例では、10は15未満ですが、20はそうではないため、はB3である必要があり10ます。B4#N/A

これが私が作成した数式で、うまく機能しますが、少し長いです(これはB3):

=IF($A$1 = "<"; IF($A3 < $B$1; $A3; NA()); IF($A$1 = "<="; IF($A3 <= $B$1; $A3; NA()); IF($A$1 = ">"; IF($A3 > $B$1; $A3; NA()); IF($A3 >= $B$1; $A3; NA()))))

よりダイジェストの方法で同じ:

=IF(
    $A$1 = "<";
    IF($A3 < $B$1;$A3; NA());
    IF(
        $A$1 = "<=";
        IF($A3 <= $B$1; $A3; NA());
        IF(
            $A$1 = ">";
            IF($A3 > $B$1; $A3; NA());
            IF($A3 >= $B$1; $A3; NA())
        )
    )
)

その仕事をするためのもっと便利な方法はありますか?文字列から演算子へのキャストは素晴らしいでしょうが、ええ、私はそのような種類のことを行うことができるプログラミング言語を知りません。:)理想的には、それは次のようなものでなければなりません=IF($A3 $A$1 $B$1; $A3; NA())...

4

2 に答える 2

4

この式を試してください

=IF(COUNTIF(A3,$A$1&$B$1),A3,NA())
于 2012-08-24T10:49:34.527 に答える
1

これは完全にこの記事に基づいていますが、ここに収まるように思われることに注意してください。これを行うには、名前付き範囲と UDF を使用する 2 つの方法があります。どちらの方法も基本的に、Excel の「非表示」の EVALUATE 関数を利用しています。

名前付き範囲

名前付き範囲を使用するには、名前を定義し (この場合は を使用Compareしました)、それに次の値を割り当てます (これはすべてシート内の範囲に関連しているため、調整が必要になる場合があります)。

=EVALUATE("IF(" & A3 & $A$1 & $B$1 &"," & A3 & ",NA())")

範囲は、シート名のプレフィックスで自動的に更新されるように見えることに注意してください。

ここに画像の説明を入力

UDF

以下を UDF として追加します。

Function Evalu(ByVal S As String) As String
  Evalu = Evaluate(S)
End Function

そして、次の式を入力します。

=INT(IFERROR(Evalu("IF(" & A3 & $A$1 & $B$1 &"," & A3 & ",NA())"),NA()))

doubleNA()は少しハックですが、Evalu 関数は #N/A ではなく #VALUE エラーを返すため、不器用に必要なエラーを強制します。また、この関数は文字列を返すため、結果を整数としてキャストする必要があります。私は最初の方法をやや好みます:)

ここに画像の説明を入力

于 2012-08-24T10:11:54.543 に答える