2017-07-21 3 views
1

Ich versuche, Zeilen basierend auf Zellen in Spalte B zu verbergen, die "MR0 ..." enthalten, und die Zeilen zu belassen, die "MR0 ..." nicht enthalten. ZB habe ich eine Liste und möchte die Reihen verstecken, die mehr als 1000 MR ... Codes enthalten. MR01010 MR01020 MR01050 MR01052 MR01059 MR01060 MR01080 MR01081 MR01110Zeile ausblenden basierend auf Zelle, die Text enthält

Ich habe folgendes versucht, aber scheinen am .value wie "* MR0" stecken zu bleiben Dann Bühne ...

Sub MonthlyStage2() 

beginRow = 13 
endRow = 500 
chkCol = 2 

For rowCnt = beginRow To endRow 
    If Cells(rowCnt, chkCol).Value Like "*MR" Then 
     Cells(rowCnt, chkCol).EntireRow.Hidden = True 
    Else 
     Cells(rowCnt, chkCol).EntireRow.Hidden = False 
    End If 
Next rowCnt 
End Sub 

&

Sub stage2() 
Dim rng As Range 
Dim cell As Range 
Dim ContainWord As String 
Dim LR As Long, i As Long 

LR = Range("B" & Rows.Count).End(xlUp).row 
For i = LR To 2 Step -1 
If Range("B" & i).Value Like "*MR0" Then Rows(i).EntireRow.Hidden = True 

Next i 

End Sub 

ohne viel Glück. Irgendwelche Hilfe bitte? prost

+0

Meinst du nicht 'wie" MR * "'? (Oder, wenn die Codes innerhalb eines anderen Textes wie "Dieser Code ist MR01010 und wird zu Demonstrationszwecken verwendet", dann "Like" * MR * "'.) – YowE3K

+0

Ich habe versucht die Variationen obwohl ja, es sollte " MR0 * ". Die ganze Zeile Wenn Bereich ("B" & i) .Wert wie "MR0 *" Dann ist immer noch markiert. – akim

+0

Nun, das Ändern von "* MR" 'in der ersten Menge von Code, die Sie in' "MR *" 'geschrieben haben, und das Einfügen von Werten in Spalte B von' MR01010', 'ABC' und' MR21' hat die zwei Zeilen erfolgreich versteckt 'MR' für mich. Und mit '" MR0 * "' im zweiten Satz von Code erfolgreich verbarg nur die Zeile mit 'MR01010'. – YowE3K

Antwort

2

Der erste Code überprüft, beginnend mit der Zeile 13 und der zweite Code beginnt von unten in Zeile bis zum Ende 2.

Beide funktionieren Kriterien *MR0* verwenden, aber vielleicht ein bisschen langsam vor allem für große erweisen Daten.

Um es schneller zu machen, denken Sie daran, die Verstecken-Operation am Ende auf einmal durchzuführen. Etwas wie dieses:

Sub MonthlyStage2() 
    Dim beginRow As Long, endRow As Long, chkCol As Long, rowCnt As Long, r As Range, tmpR As Range 
    beginRow = 13 
    endRow = 500 
    chkCol = 2 
    For rowCnt = beginRow To endRow 
     If Cells(rowCnt, chkCol).Value Like "*MR0*" Then 
      If r Is Nothing Then 
       Set r = Cells(rowCnt, chkCol) 
      Else 
       Set tmpR = Cells(rowCnt, chkCol) 
       Set r = Union(r, tmpR) 
      End If 
     End If 
    Next rowCnt 
    r.EntireRow.Hidden = True 
End Sub 
Sub stage2() 
    Dim rng As Range, cell As Range, ContainWord As String, LR As Long, i As Long, r As Range, tmpR As Range 
    LR = Range("B" & Rows.Count).End(xlUp).Row 
    For i = LR To 2 Step -1 
     If Range("B" & i).Value Like "*MR0*" Then 
      If r Is Nothing Then 
       Set r = Range("B" & i) 
      Else 
       Set tmpR = Range("B" & i) 
       Set r = Union(r, tmpR) 
      End If 
     End If 
    Next i 
    r.EntireRow.Hidden = True 
End Sub 
+0

Danke YowE3K & neugierig. Ich habe den Fehler mit i gefunden. Es gab eine Formel, die zu einem Fehler führte, den die Codes nicht mochten. alles funktioniert jetzt gut. Vielen Dank. – akim

Verwandte Themen