1

概要:不要な列がたくさんあるスプレッドシートがあります。将来、新しい列が追加される可能性があるため、必要な列をすべて削除し<>ます。

問題:以下に私が使用する長いIf Orステートメントが1つありますが、それは常に真実です。'sと他の多くの括弧のバリエーションの間に各ステートメントを括弧で囲んでみOrましたが、どれも正しくありませんでした。括弧の1つのバリエーションでは、ステートメントは常にfalseでしたが、私が受け取った変更はそれだけでした。

コード:

If (Cells(4, i).Value <> "BATCH_ID" Or Cells(4, i).Value <> "Indicative" Or Cells(4, i).Value <> "Company Code" Or Cells(4, i).Value <> "Policy Num" Or Cells(4, i).Value <> "Numeric Amount" Or Cells(4, i).Value <> "Legal Amount" Or Cells(4, i).Value <> "PAYMENT_AMT") Then

      ActiveCell.EntireColumn.Delete

End If

私はここで何が間違っているのですか?前もって感謝します!

4

3 に答える 3

10

他の人は、この場合に使い切る際の素晴らしい概念をほのめかしていAndます。また、複数の基準がある場合は、読みやすく、理解しやすく、編集しやすいので、Or使用することをお勧めします。Select Case

Select Case Cells(4, i).Value

    Case Is = "BATCH_ID", "Indicative", "Company Code", "Policy Num", "Numeric Amount", "Legal Amount", "PAYMENT_AMT"

    Case Else: ActiveCell.EntireColumn.Delete

End Select
于 2012-10-16T14:34:35.490 に答える
2

否定的な「または」ステートメントは、しばしば人々をつまずかせます。

実際には「and」を使用する必要があります。ロジックは次のとおりです。

の場合x <> a or x <> b、xはa以外の任意の値にすることができ、xはb以外の任意の値にすることができます。したがって、x == aの場合、2番目のステートメントは真であり、x == bの場合、最初のステートメントは真です。ORを使用すると、2つのステートメントのうち1つだけが真である必要があり、すべてが真になります。

「and」を使用する場合:

の場合x <> a AND x <> b、最初の部分のxはa以外の任意の値になり、2番目の部分のxはb以外の任意の値になりますが、... xがaの場合、最初の部分はfalseであるため、ステートメント全体がfalseになります。

于 2012-10-16T14:31:05.330 に答える
2

一致しない行のみを削除するため、ANDを使用してみてください。ORを実行するには、true/falseの条件が1つだけ必要なためです。

あなたの場合、「Batch_ID」と等しくない(trueの場合->削除)などと表示されます。

If (Cells(4, i).Value <> "BATCH_ID" AND Cells(4, i).Value <> "Indicative") Then
于 2012-10-16T14:32:29.090 に答える