Clever-Excel-Forum

Normale Version: Like Operator
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo Community!

Ich bräuchte eure Hilfe beim Like-Operator.
Ich habe bereits in meinen Büchern geschaut, finde jedoch keine Lösung bzw. meinen Fehler.

Ich möchte, dass in Spalte I jeder Eintrag gelöscht wird bzw. value "", wenn dort etwas anderes als like "nichts" steht. Dieses "nichts" ist dabei manchmal groß oder klein geschrieben.

Wo genau liegt nun mein Fehler?

Code:
Sub DeleteAllExceptNichts()

   Dim Zeile As Long
   Dim ZeileMax As Long
   Dim Text As Variant
   
       With tblExport
       
           Text = "*nichts*"
           ZeileMax = .UsedRange.Rows.Count
           
               For Zeile = 2 To ZeileMax
                               
                   If .Range("I" & Zeile).Value Like Text Then
                      .Range("I" & Zeile) = ""
                   End If
                                       
               Next Zeile
                                                                                             
       End With

End Sub
Hallo,

ich rate mal. Setz doch einfach ein NOT nach IF:
If not .Range("I" & Zeile).Value Like Text Then
Hallo,

hier würde Replace effektiver sein, denke ich:


Code:
Sub test()
 tblExport.UsedRange.Replace What:="nichts", Replacement:="", LookAt:=xlPart, SearchOrder _
       :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
Hallo,

und ergänze ein lcase(), um sowohl Groß- als auch Kleinschreibung zu erfassen.

mfg
(22.02.2017, 10:47)atilla schrieb: [ -> ]Hallo,

hier würde Replace effektiver sein, denke ich:


Code:
Sub test()
 tblExport.UsedRange.Replace What:="nichts", Replacement:="", LookAt:=xlPart, SearchOrder _
       :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

Vielen Dank,

komme leider nicht ganzu so weiter.
Wo liegt mein Fehler?

Code:
Sub test()
    Dim ZeileMax As Long
    Dim Zeile As Long
    
    With tblExport
      
        ZeileMax = .UsedRange.Rows.Count
          
        For Zeile = 2 To ZeileMax
          
        tblExport.UsedRange.Cells(Zeile, 9).Replace What:="nichts", Replacement:="", LookAt:=xlPart, SearchOrder _
           :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
          
        Next
        
    End With
    
End Sub

Diese Prozedur löscht somit alle "nichts"
Hallo,

da brauchst Du keine Schleife.
Der eingestellte Code ersetzt in Einem im benutzen Bereich.

Führ ihn einfach so aus, wie ich es eingestellt habe.
(22.02.2017, 11:11)atilla schrieb: [ -> ]Hallo,

da brauchst Du keine Schleife.
Der eingestellte Code ersetzt in Einem im benutzen Bereich.

Führ ihn einfach so aus, wie ich es eingestellt habe.

Aber ich muss ja irgendwie die entsprechende Spalte anwählen, oder nicht?

Und wenn dort "nichts"(ob groß oder klein geschrieben) steht, soll nichts passieren. Andern falls soll die Zelle "" gestellt werden.
(22.02.2017, 10:46)Der Steuerfuzzi schrieb: [ -> ]Hallo,

ich rate mal. Setz doch einfach ein NOT nach IF:
If not .Range("I" & Zeile).Value Like Text Then

   
Code:
Dim Zeile As Long
    Dim ZeileMax As Long
    Dim Text As Variant
   
        With tblExport
       
            ZeileMax = .UsedRange.Rows.Count
            Text = "nichts"
                
                For Zeile = 2 To ZeileMax
                               
                    If Not .Range("I" & Zeile).Value Like Text Then
                       .Range("I" & Zeile) = ""
                    End If
                                       
                Next Zeile
                                                                                              
        End With

Das funktioniert leider auch nicht. Groß- und Kleinschreibung wird nicht beachte. Wie bekomme ich diesen lcase da rein?
Hallo,

aah, sorry ich habe es genau anders herum verstanden.

Muss ich noch einmal drüber schauen.
In der Zwischenzeit kannst Du Dich ja mit den anderen Vorschlägen auseinandersetzen.
Hallo,

dann würde ich es so versuchen:


Code:
Sub DeleteAllExceptNichts()

  Dim Zeile As Long
  Dim ZeileMax As Long
  Dim Text As Variant
 
      With tblExport
     
          Text = "*nichts*"
          ZeileMax = .UsedRange.Rows.Count
         
              For Zeile = 2 To ZeileMax
             
                 If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 0 Then
                   .Range("I" & Zeile) = ""
                 End If
                 
              Next Zeile
                                                                                           
      End With

End Sub
Seiten: 1 2 3