2016-10-24 10 views
0

"instring"関数を使用してカウンタのトリプルフィルタを作成しようとしました。 主なアイデアは、範囲を定義し、次のようにすべてのセルをチェックすることである:カラムの左側にチェック、見つかったセルに「0111」のコンテンツ場合)細胞トリプルifステートメントのVBAマクロINSTR関数

2の「0111」

1)コンテンツを探し上記のすべての場合、現在のセルの行は、(色3)

4)赤でない場合、このセルの、内容が「127」)

3が存在する場合はチェックカウンタを上げ、真です。次のように

私のコードでは、なります

Set SrchRng4 = Range("J1:J100") 

For Each cel In SrchRng4 
    If InStr(1, cel.Value, "0111", 1) > 0 Then 
    If InStr(1, ActiveCell(Offset(-1,0), "127", 1) > 0 And cel.EntireRow.Interior.ColorIndex <> 3 Then 
     count_K = count_K + 1 

    End If 
Next cel 

それは、「111」の検索と赤の行のexeptionのために働くが、それは「127」フィルタを追加した後は動作しません。 誰かがそれを入力できますか?私は構文のいくつかの問題があると思いますか?

種類について、 マーカス

+1

試みである場合を除き、各If .. Then文は、一致End If文を持つべきである(1、cel.Offset(-1,0)、 "127"、1) > 0 And ... ' –

+1

@ KazimierzJawor5は' cel.Offset(-1,0) 'を除いて解を与えました。' cel.Offset(0、-1) 'でなければなりません。さらに、時間のパフォーマンス上の問題がある場合は、最初の2つの条件をフィルタリングし、最後の1つをチェックするためにフィルタリングされたセルをループすることが必要な場合があります。 – user3598756

+0

Hallo guys、返信いただきありがとうございます。ループは終了していないようですが、エラーはコードの最後の行に表示されます: "コンパイルエラー:For without without" " – user36510

答えて

1
For Each cel In Range("J1:J100") 
    If InStr(cel, "0111") And InStr(cel(,0), "127") _ 
     And cel.EntireRow.Interior.Color <> vbRed Then count_K = count_K + 1 
Next 
  • 0でない数値がTrueに評価されるので、> 0は任意
  • cel(,0)あるcel
  • の左のセルを取得する cel.Offset(0,-1)に類似しています
  • vbRedおよびrgbRedは赤色の定数ですが、.ColorIndex <> 3はfinです電子あまりに
  • が1行にInStr関数の場合 `と
関連する問題