Makro Suche Wert und ersetze andere Zeile + zeilen löschen
#1
Hallo zusammen

Ich bräuchte mal wieder eure Hilfe bei einem Makro.
Ich erhalte aus unserem System die im Anhang befindliche Excel Auswertung.
Diese wird für 2 Kommissionier Abteilungen ausgewertet mit unterschiedlichen Produkten.
Die Spaltenanzahl und Beschriftung bleibt gleich, die Zeilenanzahl kann von 10-xxxx gehen.

Habe gleich 2 Anliegen.

1. Ich möchte das in Spalte "Q" ein Text gesucht wird (Coop at Home Spreitenbach) und daraufhin die Zeit in Spalte "H" geändert wird in 23:59. Dafür habe ich auch einen Makro, jedoch sucht der nur so lange bis er einen Eintrag gefunden hat. Dies müsste aber über mehrere Zeilen laufen, sich also wiederholen.
In der Beispieldatei wäre die in Zeile 7 und 14. Variiert aber täglich und teilweise gibt es auch keinen Eintrag.

Zitat:Makro Code:

Sub Zeit_Coop_at_Home()
Dim raFund As Range
Set raFund = Columns("Q").Find(What:="Coop at Home Spreitenbach", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
If Not raFund Is Nothing Then
    raFund.Offset(, -9) = "23:59"
End If
Set raFund = Nothing
End Sub


2. Ich bräuchte noch einen Makro der mir bestimmte Artikelnummern aus Spalte "E" sucht und dabei die komplette Zeile immer löscht. Hier müsste ich aber wieder im Code viele Artikelnummern hinterlegen können und nicht nur einen. Dementsprechend soll er dann diese alle löschen. Exemplarisch habe ich jetzt nur 2 Artikel im Muster drin. Dort sollen die Zeilen mit den Artikelnummern "60178" und "82361" gelöscht werden.

Gruss
Fire


Angehängte Dateien
.xlsm   Clever_Excel_Anfrage.xlsm (Größe: 98,66 KB / Downloads: 5)
Verwendete Office Version: 10
Top
#2
Hallo,

ich würde das mit einer Schleife lösen, etwa so:
Code:
Sub zeitändern()
Dim lzeile As Integer
With Sheets("Tabelle1")
    For lzeile = 10 To 1000
        If .Cells(lzeile, 17) = "Coop at Home Spreitenbach" Then
            .Cells(lzeile, 8) = "23:59"
        End If
    Next lzeile
End With
End Sub

Sub löschen()
Dim lzeile As Integer
With Sheets("Tabelle1")
    For lzeile = 10 To 1000
        If .Cells(lzeile, 5) = "60178" _
        Or .Cells(lzeile, 5) = "82361" Then
            Rows(lzeile, lzeile).Delete
            lzeile = lzeile - 1
        End If
    Next lzeile
End With
End Sub

Gruß
Stefan

ps. wenn du nach mehr als zwei Werten suchen willst, dann halt nochmal _
or .cells etc.
[-] Folgende(r) 1 Nutzer sagt Danke an SH95 für diesen Beitrag:
  • FireBurn
Top
#3
So nun noch antworten.

Also das ändern der Zeit funktioniert einwandfrei. Danke dafür schon mal.

Das löschen funktioniert irgendwie noch nicht. Er gibt mir einen "Laufzeitfehler 1004" an.
Verwendete Office Version: 10
Top
#4
Hallo nochmal :)

also erstmal sorry, irgendwann sieht man den Wald vor lauter Bäumen nicht mehr :)

Code:
Sub löschen()
Dim lzeile As Integer
With Sheets("Basis")
    For lzeile = 10 To 1000
        If .Cells(lzeile, 5) = "60178" _
        Or .Cells(lzeile, 5) = "82361" Then
            Rows(lzeile).Delete
            lzeile = lzeile - 1
        End If
    Next lzeile
End With
End Sub

Da war ich bei rows() wohl etwas voreilig...

so sollte es funktionieren (bzw. in deiner Beispielmappe funktioniert es so) :)

Gruß
Stefan
[-] Folgende(r) 1 Nutzer sagt Danke an SH95 für diesen Beitrag:
  • FireBurn
Top
#5
Perfekt Danke Dir für die schnelle Hilfe. Thumbsupsmileyanim
Verwendete Office Version: 10
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste