22.02.2017, 16:03
22.02.2017, 16:12
Das Problem ist, dass in diesem Bereich zwar "nichts" stehen kann, aber dennoch bleiben soll. Nur wenn in I2 "nichts" steht, soll auch J2 gelöscht werden. Wenn in J2 "nichts" steht und in I2 etwas anderes steht als "nichts", soll J2 auch erhalten bleiben.
Hab nun mittels deinem Code folgendes:
Erfüllt seinen Szweck, ist aber wohl weder effizient noch schön.
Weiß nun nicht wie ich noch eine Variable für die Spalten J:Q definieren kann.
Hab nun mittels deinem Code folgendes:
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
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("J" & Zeile) = ""
End If
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("K" & Zeile) = ""
End If
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("L" & Zeile) = ""
End If
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("M" & Zeile) = ""
End If
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("N" & Zeile) = ""
End If
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("O" & Zeile) = ""
End If
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("P" & Zeile) = ""
End If
If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 1 Then
.Range("Q" & Zeile) = ""
End If
Next Zeile
End With
End Sub
Erfüllt seinen Szweck, ist aber wohl weder effizient noch schön.
Weiß nun nicht wie ich noch eine Variable für die Spalten J:Q definieren kann.
22.02.2017, 16:15
Moin!
Bevor wir hier bei #50 landen …
Beschreibe mal konkret, was Du willst.
Gerne auch iVm mit einer konkreten Datei.
Und komme nicht mit "nichts"!
(unfreiwillig komisch, der letzte Satz)
Gruß Ralf
Bevor wir hier bei #50 landen …
Beschreibe mal konkret, was Du willst.
Gerne auch iVm mit einer konkreten Datei.
Und komme nicht mit "nichts"!
(unfreiwillig komisch, der letzte Satz)
Gruß Ralf
22.02.2017, 16:46
Hallo zusammen,
ich gebe dem Ganzen noch eine Chance:
ich gebe dem Ganzen noch eine Chance:
Code:
[I1:I2000] = [if(iserr(search("nichts",I1:I2000)),"",I1:I2000)]
[J1:Q2000] = [if(iserr(search("nichts",J1:Q2000)),J1:Q2000,"")]
22.02.2017, 17:56
schau mal
22.02.2017, 20:09
Hallo
anbei dein eigener Code zurück, bei mir klappt er einwandfrei. Mit einem Effekt, der passieren kann!! Nicht muss!!
Der Befehl -.UsedRange.Rows.Count- brachte mir mir in einer neuen Tabelle zuerst ein falsches Ergebnis, die letzten drei Zeilen wurden nicht gelöscht!! Das verblüffte mich als alter Praktiker sehr, und so testete ich es dreimal, bis ich diesen ulkigen Effekt schlagartig begriff!!
Wenn bei Used.Range.Row.Count in den ersten Zeilen noch nie ein Wert gestanden hat, weil man mit Zeile 3 oder 4 anfaengt, dann stimmt der Wert von Rows.Count nicht! Man beachte den kleinen, aber feinen Unterschied bei Excel!
mfg Gast 123
anbei dein eigener Code zurück, bei mir klappt er einwandfrei. Mit einem Effekt, der passieren kann!! Nicht muss!!
Der Befehl -.UsedRange.Rows.Count- brachte mir mir in einer neuen Tabelle zuerst ein falsches Ergebnis, die letzten drei Zeilen wurden nicht gelöscht!! Das verblüffte mich als alter Praktiker sehr, und so testete ich es dreimal, bis ich diesen ulkigen Effekt schlagartig begriff!!
Wenn bei Used.Range.Row.Count in den ersten Zeilen noch nie ein Wert gestanden hat, weil man mit Zeile 3 oder 4 anfaengt, dann stimmt der Wert von Rows.Count nicht! Man beachte den kleinen, aber feinen Unterschied bei Excel!
mfg Gast 123
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 LCase(.Range("I" & Zeile)) Like Text Then _
Else .Range("I" & Zeile) = ""
Next Zeile
End With
End Sub