2017-10-03 13 views
1

Cの列のセルの一部に「Rinse」という単語が含まれているExcelテーブルがあります(他のセルにはさまざまな内容があります)。特定の単語を含まないセルを選択する方法

VBAコードを使用して、C列の「Rinse」という単語を含むすべての行を選択する方法は次のとおりです。このコードは正常に動作します。

For i = 3 To 300 
    If Cells(i, 3).Value = "Rinse" Then 
     Rows(i).Select 
     Selection.FormatConditions.Delete 
    End If 
Next 

しかし、私はすなわちに、全く逆をやりたいがC列に単語「リンス」を含まないすべての行を選択します。私は以下を試しましたが、うまくいきません。

For i = 3 To 300 
    If Cells(i, 3).Value = Not "Rinse" Then 
     Rows(i).Select 
     Selection.FormatConditions.Delete 
    End If 
Next 

どうすればよいですか?

+0

NB:はい、選択した後、選択したセルの書式が削除されます。 – Renee

+4

'If Cells(i、3).Value <>"を使用する "Then"をリンスする – Mrig

答えて

2

このように、Instr機能を使用します。

If Instr(Cells(i, 3).Value, "Rinse") = 0 Then 
2

Likeオペレータはここに役立つことができます:

If Not Cells(i, 3).Value Like "*Rinse*" Then 

"すすぎ" あなたのセル値のどこに

2

を見つけることができる場合このコード行を変更してください(<>と等しくない)

If Cells(i, 3).Value <> "Rinse" Then 
0

@Renee - 以下のようにif条件行を変更します。

For i = 3 To 300 
    If Cells(i, 3).Value <> "Rinse" Then 
     Rows(i).Select 
     Selection.FormatConditions.Delete 
    End If 
Next 
2

リンス値を除外して表示セルを選択することができます。
個々のセルを見るよりも早くなる場合があります。

Public Sub Test() 

    Dim lRow As Long 

    With ThisWorkbook.Worksheets("Sheet1") 
     lRow = .Cells(.Rows.Count, 3).End(xlUp).Row 
     With .Range(.Cells(1, 3), .Cells(lRow, 3)) 
      .AutoFilter Field:=1, Criteria1:="<>*Rinse*" 
      'Can replace Select in next row with .FormatConditions.Delete 
      .SpecialCells(xlCellTypeVisible).Select 
     End With 
     .ShowAllData 
    End With 

End Sub 
1

このコードの利点は、その速度です。加速は、シートを1行ごとに1回だけ参照し、結果については1回だけ、行全体ではなく使用範囲列のみをフォーマットすることによって達成されます。

Private Sub SelectNonContiguousRange() 

    Dim RngAddress() As String 
    Dim i As Long 
    Dim R As Long 

    ReDim RngAddress(300)     ' this number should be 
    With ActiveSheet 
     For R = 3 To 300     ' equal to this number 
      ' use = (equal) or <> (unequal) as required: 
      If .Cells(R, "C").Value <> "Rinse" Then 
'   If .Cells(R, "C").Value = "Rinse" Then 
       RngAddress(i) = .Range(.Cells(R, "A"), _ 
             .Cells(R, .UsedRange.Columns.Count)).Address 
       i = i + 1 
      End If 
     Next R 
     ReDim Preserve RngAddress(i - 1) 
     .Range(Join(RngAddress, ",")).FormatConditions.Delete 
    End With 
End Sub 

(あなたがのCtl +クリックで行うことができますように)ところで、あなたは、たとえば、すべての行が単語「すすぎ」を含む、同時に複数の行を選択するには、このコードのバリエーションを使用することができます。

関連する問題