Ich habe ein irrenführendes Problem und komme einfach nicht weiter.. :22: :s
Dieses Excel Tabelle (Foto im Anhang) möchte ich gerne zum Bezahlstatus der Kunden einsehen. (Seite 2) Alle 15 Tage erscheint eine neue Excel Tabelle in dieser Form die ich in auf (Seite 1) einfüge.
Auf Seite 2 habe ich die Zeile A bereits vorinstalliert, Status -> Dropdown Liste mit Farben. Um viel Zeit sparen zu können.. brauche ich allerdings noch:
Wenn auf Seite 2 die Referenz aus Zeile M, auf Seite 1 (UPDATE) icht aufgelistet ist, dann die gesamte Zeile (Zeile 5 von der Seite 2) löschen.
22.03.2018, 03:01 (Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2018, 03:02 von Jockel.)
(22.03.2018, 02:41)iamye schrieb: Hallo alle zusammen :)
Ich habe ein irrenführendes Problem ... ... Wenn auf Seite 2 die Referenz aus Zeile M, auf Seite 1 (UPDATE) icht aufgelistet ist, dann die gesamte Zeile (Zeile 5 von der Seite 2) löschen.
Ist das möglich ?
Hallo, hoffentlich nicht (irrenführend), so schlimm..? Nein. Auf Fotos nicht und in Excel-Dateien kann man mit einer (oder mehreren) Formeln - egal welcher auch nix (also überhaupt nix) löschen...
Gruß Jörg stolzes Mitglied im ----Excel-Verein Freund einer excellenten Power Query-Abfrage
22.03.2018, 13:50 (Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2018, 13:50 von iamye.)
(22.03.2018, 03:01)Jockel schrieb: Hallo, hoffentlich nicht (irrenführend), so schlimm..? Nein. Auf Fotos nicht und in Excel-Dateien kann man mit einer (oder mehreren) Formeln - egal welcher auch nix (also überhaupt nix) löschen...
Ok alles klar, und wenn ich das Ganze mit Hilfslinie ausstatte ? Dh. wenn der Wert auf Seite 1 nicht wieder gespiegelt wird, dann Resultat = 0 ?
Diese kann ich dann nachher filtern und eben manuel löschen ? :)
Oder wenn die Referenz auf Seite 1 nicht mehr ausgelistet ist dann Zeile XY ganz leeren.
Was ist einfacher ?
Diese kann ich dann nachher filtern und eben manuel löschen ? :)
Ich könnte mir gut vorstellen, dass dein Vorhaben mit VBA möglich ist aber das ist a) nicht meine Baustelle und ich vermute auch b) dass die VBA-Experten eine Beispielsdatei und eine genauere Beschreibung benötigen.
Aber das können dir die Kollegen selbst besser sagen.
Gruß Peter
Folgende(r) 1 Nutzer sagt Danke an Peter für diesen Beitrag:1 Nutzer sagt Danke an Peter für diesen Beitrag 28 • iamye
um ein auf Deine Datei angepaßtes VBA-Makro zu erstellen, benötigen die Helfer eine Excel-Beispieldatei zum Testen.
Es ist schwierig, sich aus einer Beschreibung eine Datei zu erstellen, die zum Testen von Funktionen, Formeln und Makros geeignet ist, dazu müßte sie gleich aufgebaut sein wie Deine Datei. Also stelle bitte (D)eine (Beispiel-)Tabelle als Excel-Datei zur Verfügung oder stelle die relevanten Ausschnitte und die Makro-Codes hier dar, siehe die als Wichtige Themen: markierten Beiträge im Forum "Nutzungs- und Bedienungshinweise" bei "Forumstechnik".
Eine Beispieldatei muss vom Aufbau her zwingend dem Original gleichen, sonst wird's mit gezielter Hilfe i. d. R. nichts oder erst nach zig Nachfragen
Meistens reichen 10-15 Datensätze
Sensible Daten sollen anonymisiert werden
Bei einigen Datensätzen sollte unbedingt händisch das Wunschergebnis eingetragen sein
Und last but not least ist es wichtig, im Post zugeschnitten auf die Beispieldatei eine ordentliche Problembeschreibung abzugeben.
Eine Bitte: Anstatt Screenshots ist eine Datei oder ein Ausschnitt besser! "Du gehst ja auch nicht in die Werkstatt und gibst zur Reparatur ein Foto Deines kaputten Autos ab!"
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28 • iamye
23.03.2018, 01:45 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2018, 02:57 von Kuwer.
Bearbeitungsgrund: Vollzitat entfernt
)
Im Anhang die gewünschte Datei :)
Makro Funktionen für Sheet 2017
-> delete <- name vom makro Wenn der Wert aus Zeile M (Sheet 2017) nicht in Zeile M (Sheet Update) auftaucht dann "hier im Beispiel Zeile 13" aus Sheet 2017 löschen.
-> insert <- name vom makro Wenn der Wert aus Zeile M (Sheet Update) nicht in Zelle M (Sheet 2017) autaucht dann gesamte Zeilen-Linie aus (Sheet Update) in Sheet 2017 einfügen.
-> update <- name vom makro
Wenn der Wert aus Zeile M (Sheet Update) in Zeile M (Sheet 2017) besteht, dann < Wert aus Zeile F (Sheet Update) in (Sheet 2017) übernehmen.
Die 3 Makors können auch einfach -> update <- genannt werden.
23.03.2018, 08:38 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2018, 08:38 von losgehts.)
Hallo,
ein paar Infos zu den drei wichtigsten Begriffen rund um Excel (meiner Meinung nach): Jede Tabelle besteht aus Zeilen und Spalten. Zeilen verlaufen horizontal (von links nach rechts) und werden durch Zahlen beschrieben (z.B. Zeile 1 oder Zeile 22). Spalten verlaufen vertikal (von oben nach unten) und werden durch Buchstaben beschrieben (z.B. Spalte A oder Spalte M). Eine Zelle ist eines dieser "Kästchen" der Tabelle, wo sich eine Zeile und eine Spalte kreuzen. Die Zellen haben Adressen, die aus den Buchstaben der Spalten und der Zeilennummer bestehen. Z.B. Zelle A1 oder Zelle M13.
Es hilft mir sehr, wenn du diese Begriffe richtig verwendest.
Ich habe dir ein kleines Makro geschrieben. Bitte teste es selbst (an Testdaten!):
Code:
Sub nameSelbstAnpassen() Dim lngLetzte2017 As Long, lngLetzte As Long, lZeile As Long, rngM As Range 'Wenn der Wert aus Zeile M (Sheet 2017) nicht in Zeile M (Sheet Update) auftaucht dann "hier im Beispiel Zeile 13" aus Sheet 2017 löschen. With Sheets("2017") 'letzte benutzte Zeile in Spalte M finden For lZeile = .UsedRange.Rows.Count + .UsedRange.Row To 1 Step -1 If Not IsEmpty(.Cells(lZeile, 13)) Then lngLetzte2017 = lZeile Exit For End If Next
For lZeile = lngLetzte2017 To 3 Step -1 ' Schleife über alle Zeilen If Not IsEmpty(.Cells(lZeile, 13)) Then ' Wenn Zelle in Spalte M nicht leer If Application.WorksheetFunction.CountIf(Sheets("update").Range("M:M"), .Cells(lZeile, 13)) < 1 Then 'ist im Sheet "update" in Spalte M nicht vorhanden .Rows(lZeile).Delete ' Zeile löschen End If End If Next End With
' insert / update With Sheets("update") lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1 ' letzte Zeile im Tabellenblatt "update" For lZeile = 1 To lngLetzte ' Schleife über alle Zeilen If Not IsEmpty(.Cells(lZeile, 13)) Then ' Wenn Zelle in Spalte M nicht leer Set rngM = Sheets("2017").Range("M:M").Find(.Cells(lZeile, 13)) ' Nach Zellinhalt in '2017'!M:M suchen If rngM Is Nothing Then ' Wenn nichts gefunden wurde 'Wenn der Wert aus Zeile M (Sheet Update) nicht in Zelle M (Sheet 2017) autaucht dann gesamte Zeilen-Linie aus (Sheet Update) in Sheet 2017 einfügen. lngLetzte2017 = lngLetzte2017 + 1 Sheets("2017").Rows(lngLetzte2017).Insert , CopyOrigin:=xlFormatFromLeftOrAbove ' Zeile einfügen Sheets("2017").Range("A" & lngLetzte2017 & ":N" & lngLetzte2017).Value = .Range("A" & lZeile & ":N" & lZeile).Value 'Werte kopieren Else 'Wenn der Wert aus Zeile M (Sheet Update) in Zeile M (Sheet 2017) besteht, dann < Wert aus Zeile F (Sheet Update) in (Sheet 2017) übernehmen. rngM.Offset(0, -7).Value = .Cells(lZeile, 6).Value ' Wert aus Spalte F übernehmen End If End If Next End With
End Sub
Grüße, Ulrich
Folgende(r) 1 Nutzer sagt Danke an losgehts für diesen Beitrag:1 Nutzer sagt Danke an losgehts für diesen Beitrag 28 • iamye
ein paar Infos zu den drei wichtigsten Begriffen rund um Excel (meiner Meinung nach): Jede Tabelle besteht aus Zeilen und Spalten. Zeilen verlaufen horizontal (von links nach rechts) und werden durch Zahlen beschrieben (z.B. Zeile 1 oder Zeile 22). Spalten verlaufen vertikal (von oben nach unten) und werden durch Buchstaben beschrieben (z.B. Spalte A oder Spalte M). Eine Zelle ist eines dieser "Kästchen" der Tabelle, wo sich eine Zeile und eine Spalte kreuzen. Die Zellen haben Adressen, die aus den Buchstaben der Spalten und der Zeilennummer bestehen. Z.B. Zelle A1 oder Zelle M13.
Es hilft mir sehr, wenn du diese Begriffe richtig verwendest.
Ich habe dir ein kleines Makro geschrieben. Bitte teste es selbst (an Testdaten!):
Code:
Sub nameSelbstAnpassen() Dim lngLetzte2017 As Long, lngLetzte As Long, lZeile As Long, rngM As Range 'Wenn der Wert aus Zeile M (Sheet 2017) nicht in Zeile M (Sheet Update) auftaucht dann "hier im Beispiel Zeile 13" aus Sheet 2017 löschen. With Sheets("2017") 'letzte benutzte Zeile in Spalte M finden For lZeile = .UsedRange.Rows.Count + .UsedRange.Row To 1 Step -1 If Not IsEmpty(.Cells(lZeile, 13)) Then lngLetzte2017 = lZeile Exit For End If Next
For lZeile = lngLetzte2017 To 3 Step -1 ' Schleife über alle Zeilen If Not IsEmpty(.Cells(lZeile, 13)) Then ' Wenn Zelle in Spalte M nicht leer If Application.WorksheetFunction.CountIf(Sheets("update").Range("M:M"), .Cells(lZeile, 13)) < 1 Then 'ist im Sheet "update" in Spalte M nicht vorhanden .Rows(lZeile).Delete ' Zeile löschen End If End If Next End With
' insert / update With Sheets("update") lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1 ' letzte Zeile im Tabellenblatt "update" For lZeile = 1 To lngLetzte ' Schleife über alle Zeilen If Not IsEmpty(.Cells(lZeile, 13)) Then ' Wenn Zelle in Spalte M nicht leer Set rngM = Sheets("2017").Range("M:M").Find(.Cells(lZeile, 13)) ' Nach Zellinhalt in '2017'!M:M suchen If rngM Is Nothing Then ' Wenn nichts gefunden wurde 'Wenn der Wert aus Zeile M (Sheet Update) nicht in Zelle M (Sheet 2017) autaucht dann gesamte Zeilen-Linie aus (Sheet Update) in Sheet 2017 einfügen. lngLetzte2017 = lngLetzte2017 + 1 Sheets("2017").Rows(lngLetzte2017).Insert , CopyOrigin:=xlFormatFromLeftOrAbove ' Zeile einfügen Sheets("2017").Range("A" & lngLetzte2017 & ":N" & lngLetzte2017).Value = .Range("A" & lZeile & ":N" & lZeile).Value 'Werte kopieren Else 'Wenn der Wert aus Zeile M (Sheet Update) in Zeile M (Sheet 2017) besteht, dann < Wert aus Zeile F (Sheet Update) in (Sheet 2017) übernehmen. rngM.Offset(0, -7).Value = .Cells(lZeile, 6).Value ' Wert aus Spalte F übernehmen End If End If Next End With
End Sub
Grüße, Ulrich
Hallo Ulrich,
das GANZE Funktioniert einwandfrei ! Vielen vielen Dank :)
Jedoch müssen noch 2 Funktionen hinzugefügt werden:
- Wenn der Text aus Spalte L (Seite - update) =/ Text aus Spalte L (Seite - 2017) dann Text aus Spalte L (Seite - update) übernehmen. - Wenn der Wert aus Spalte F (Seite - 2017) ändert, dann Zelle (aus Spalte A, Seite - 2017) löschen.
Spalte A (Seite - 2017) soll eine auszuwählende liste bekommen.
-> envoyé // wenn dieses wort ausgewählt ist soll die Reihe A3 - N3 zb. gelb markiert werden.
Letzte Frage.., ist es möglich die Sätze im Makro zu ändern ?
23.03.2018, 13:35 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2018, 13:35 von WillWissen.)
Hallo iamye,
du musst nicht bei jeder Antwort den vorigen Beitrag zitieren. Benutze stattdessen bitte den Antworten-Button am Ende der Beiträge. Sollten in Einzelfällen Zitate notwendig sein, kannst du sie auch auf das Notwendige kürzen.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:1 Nutzer sagt Danke an WillWissen für diesen Beitrag 28 • iamye