Office: Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen

Helfe beim Thema Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, leider habe ich noch in keinem Buch einen Hinweis gefunden ... Folgende Probleme: 1. Die Stammdatendatei ist per Makrorecorder soweit... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von greyhair, 18. September 2012.

  1. greyhair Erfahrener User

    Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen


    Hallo, leider habe ich noch in keinem Buch einen Hinweis gefunden ...
    Folgende Probleme:


    1. Die Stammdatendatei ist per Makrorecorder soweit formatiert, das bestimmte Spalten gelöscht wurden usw.
    In einer der übriggebliebenen Spalten stehen nun noch 2-4 stellige Zahlen. Ich möchte nun nach bestimmten Zahlen suchen lassen und die betreffenden Zeilen löschen.

    2. Nachdem Problem 1 gelöst ist muss das komplette Tabellenblatt im selben Arbeitsordner kopiert werden (Ursprünglich nur Tabelle 1, nun kommt Tabelle 2 hinzu)

    3. Da die Inhalte dieser beiden Blätter für einen Serienbrief genutzt werden müssen sind nur noch Sortierarbeiten erforderlich die ich gerne wieder per Recorder basteln würde.

    Kann mir jemand auf die Sprünge helfen?
     
  2. fette Elfe Erfahrener User
    Hallo greyhair,

    hier im Forum tummeln sich mehrere Leute, die Dir bei solchen Dingen helfen könnten.
    Aber ohne eine Beispieldatei (exakt gleicher Aufbau des Originals, gerne aber Dummy-Daten) und eine genaue Beschreibung was wann wo und warum geschehen soll, wirds echt schwierig...
     
    fette Elfe, 18. September 2012
    #2
  3. greyhair Erfahrener User
    Hallo Achim,
    ja ist ok. Ich habe mal eine Datei angehängt mit Dummydaten. Die echte Datei enthält etwa 3000 Zeilen. Vielleicht wird ja nun verständlich worum es geht.
    Hilfe ist leider dringend erforderlich, da ich absoluter Neuling in Sachen VBA bin und derzeit durch Bücher versuche mich irgendwie ans Ziel zu schleppen ...
     
  4. fette Elfe Erfahrener User

    Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen

    Hallo greyhair,

    ich habe mir Deine Datei und die Aufgabenstellung jetzt mal genau angeschaut.
    Sollte soweit kein Problem darstellen.
    Könnte klappen, dass ich übers Wochenende genug Zeit habe Dir den nötigen Code zu schreiben.


    Dazu hätte ich aber noch folgende Fragen:

    - sehen die Quelldaten zuverlässig immer exakt genauso aus, oder könnte man aus Unachtsamkeit oder Unwissenheit den Datenexport aus SAP so verstellen, dass die Spalten andere Reihenfolgen haben, oder nicht alle exportiert werden, oder auch zusätzlich noch welche hinzu kommen? Sprich, reicht es wenn ich im Code jeweils die entsprechende Spaltennummer angebe (weil eh immer alles gleich ist), oder müsste man vorher noch nach der entsprechenden Überschrift suchen (weil nicht immer alles gleich ist) ?

    - in welchen Spalten ist garantiert in jeder Zeile auch ein Eintrag, oder meinetwegen auch andersherum, in welchen Spalten muss nicht immer in jeder Zeile ein Wert stehen?

    - wie oft benötigst Du dieses Makro? Ich frage deshalb, weil man eine Exceldatei erstellen könnte, aus der heraus man über den Datei-Auswahl-Dialog die jeweils aktuelle Export-Datei aufrufen und einlesen könnte. Das könnte Sinn machen, wenn Du diese Funktion oft (z.Bsp. jeden Tag) benötigst. Obendrein könnte man dann auch die Quelldatei automatisch löschen, falls Du sie nicht mehr benötigst (so sammelt sich kein Datenmüll an).

    - müssen die Ziel-Blätter dauerhaft bestehen bleiben (zentral in einer, oder jeweils in einer eigenen Datei), oder könnte man sie automatisch beim nächsten Aufruf des Makros löschen, da bis dahin die Aufkleber wohl gedruckt sein dürften?

    - reicht es für Deinen Aufkleberdruck, wenn die Ziel-Blätter in einer Datei sind, oder müssen sie einzeln als Datei abgespeichert werden?


    - was mir nicht ganz klar ist: wenn Du die Taktung über eine Eingabemaske vorgeben willst, was muss diese Maske alles anzeigen, und nach welchen Kriterien willst Du da suchen können? Weil, man könnte ja auch zeilenweise die Liste durchklicken und die Taktung anpassen, und erst danach ein Makro auslösen, dass dann die Zeilen entsprechend dupliziert.
     
    Zuletzt bearbeitet: 21. September 2012
    fette Elfe, 21. September 2012
    #4
  5. greyhair Erfahrener User
    Hallo Achim,
    danke schon mal für die angebotenen Hilfe. Zu den Fragen:
    1. Die SAP-Datei sieht immer gleich aus und kann auch nicht verändert werden
    2. Die Spalten die am Anfang gelöscht werden haben teilweise keine Einträge in den Zeilen. Die übriggebliebenen haben immer irgendeinen Eintrag
    3. Hier habe ich die Frage von Dir nicht wirklich verstanden. Ich benötige diese Datei immer Montags. Ich glaube, dass man einen Serienbrief auch aus einer Datei mit
    mehreren Blättern schreiben kann, oder? Auf jeden Fall kann die Datei bzw. die ergebnisdateien gelöscht werden, sobald ich sie jemand zum drucken geschickt habe.
    Sie muss also nicht archiviert werden
    4. Das mit der Taktung habe ich auch noch nicht verstanden. Da sich die Anzahl der Zettel je nach Höhe der Takte ergeben, wollte ich dem späteren User die Möglichkeit
    geben, durch Eingabe einer Zahl (Taktmenge) in einem dafür vorgesehenen Feld, die Kopierarbeit zu ersparen. Im Moment werden die Zeilen markiert und 2,3,4 oder 5x
    kopiert und eingefügt. Wäre klasse wenn das ein Makro automatisch könnte.

    Letztenendes ist es egal, an welcher Stelle etwas abgearbeitet wird. Der Benutzer sollte nur keine große Zeit damit verschwenden Dateien zu formatieren, zu kopieren usw. Hauptsache die Ergebnisdatei ist dann zum verschicken bereit.
    Leider bin ich in Excel nicht soooo fit, das ich erkennen kann ob ein anderer Weg besser und effektiver ist.
    Ich bin für jeden guten Tipm dankbar.

    Schönes Wochenende noch
     
  6. fette Elfe Erfahrener User
    Hallo greyhair,

    danke für die schnelle Antwort.
    Das ist extrem hilfreich für die Umsetzung.


    Meine Frage zielte darauf ab, dass ich vorhabe eine Exceldatei zu erstellen, in der der komplette Code und alles sonst noch nötige hinterlegt ist. Aus dieser Datei heraus wirst Du dann die Möglichkeit haben, den jeweils aktuellen SAP-Export auszuwählen, und der Rest passiert dann durch das Makro automatisch, mehr musst Du (oder Dein Mitarbeiter) garnicht mehr tun.
    Desweiteren wird für Deine beiden Zielblätter jeweils eine Exceldatei erstellt werden, die Du dann für den Seriendruck nutzen kannst. Da die Dateien durch das automatische erstellen immer im gleichen Ordner gespeichert werden, ist es kein Problem, vorher die alten Dateien aus dem Ordner zu löschen.
    Ich denke, für 1x pro Woche lohnt sich das. Für 1x im Jahr wäre mir der Aufwand zu hoch...
    Ich hoffe Du hast jetzt besser verstanden was ich meinte.



    :D:D:D ... dann sind wir ja schon zu zweit ... :D:D:D


    Also die Zeilen mittels Makro entsprechend eines Zellwertes zu vervielfältigen ist kein Problem.
    Ich habe nur noch nicht verstanden, wieso ein User den Takt eingeben muss. Steht der nicht bereits in der Liste?

    Als nächstes frage ich mich: muss der User dann die Taktung für alle Zeilen manuell eingeben, oder möchtest Du nur die Möglichkeit haben, manchmal manuell den Takt anpassen zu können?


    Und damit Du meine Fragen vielleicht besser verstehst:
    Ich stelle mir eine seeeeeehr lange Liste vor.
    In der Spalte "Taktung" muss ich nun für jede Zeile einen Wert eintragen.
    1. Woher nehme ich den Wert? (Erfahrung, eine andere Liste, etwas was man berechnen kann...) ???
    2. Wenn die Liste durch das Makro bereits komplett bearbeitet und auf die beiden Zielblätter verteilt ist, und nur die Vervielfältigung der Zeilen fehlt noch, könnte ich dann nicht in der Spalte "Taktung" von oben nach unten die Werte recht fix manuell eintragen, und danach ein Makro starten, welches mir die Zeilen vervielfältigt? Brauche ich da eine Maske?
    3. Wenn ich unbedingt eine Maske brauche, was muss diese alles anzeigen, damit ich auch den richtigen Eintrag erwische, wenn ich einen Takt eintragen will. Schließlich habe ich eine lange Liste mit unterschiedlichen Taktungen. Also muss ich ja gezielt einen Eintrag auswählen können.

    Verstehst Du mich nun besser?
    Ich habe Zweifel ob eine Maske notwendig bzw. überhaupt notwendig ist, und ich habe noch nicht wirklich verstanden aufgrund welcher Kriterien ein Eintrag identifiziert wird, damit man ihm eine Taktung zuweisen kann.
     
    fette Elfe, 22. September 2012
    #6
  7. greyhair Erfahrener User
    Hi Achim,
    Also die Taktung ist die Anzahl der Teile die in eine Box gehören. Die Anzahl variert aber wöchentlich. Wenn also ein Bezirk 50 kleine Teile (Takte) bekommt passt das heute möglicherweise in eine Box. Nächsten Monta kann es aber sein, dass es 50 größere Teile sind, sodass ich dann 2 oder 3 Boxen benötige. An die erste Box kommt der normale Frachtbrief, sodass ich nichts zusätzlich benötige. Habe ich aber eine 2. oder 3. Box, dann benötige ich eben 1 oder 2 oder auch mehr weitere Zettel um diese an den Boxen anzubringen.

    Dadurch, dass jemand variabel über eine Eingabemöglichkeit verfügt kann ich also die Anzahl der zu druckenden Zettel als Serienbrief steuern.

    Ich hoffe, dass die Problematik jetzt deutlicher wurde.

    Gruß
    Jürgen
     
  8. fette Elfe Erfahrener User

    Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen

    Hallo Jürgen,

    der Sinn der hinter dieser Anforderung steht, ist mir schon klar, bzw. im Detail auch nicht unbedingt relevant.
    Leider hast Du meine Fragen nicht wirklich beantwortet (Fragen 2 & 3), so dass ich immer noch nicht weiß, wie ich das für Dich sinnvoll umsetzen soll.

    Mir scheint allerdings, dass es ohne Probleme machbar sein sollte, einfach manuell die Takte in der Liste anzupassen, und danach erst ein Makro zu starten, welches die Zeilen entsprechend dupliziert.
    Bisher sehe ich noch keinen Grund, der den Aufwand einer Maske rechtfertigen würde.
     
    Zuletzt bearbeitet: 23. September 2012
    fette Elfe, 23. September 2012
    #8
  9. greyhair Erfahrener User
    Hallo Achim, in der Tat ist es nicht ganz so einfach...
    Egal ob vor oder nach der Formatierung... ich benötige eben eine bestimmte Anzahl von Zetteln zu einem bestimmten Bezirk. Die Menge der Zettel ist eben abhängig von der Menge die in eine Box passt. (Dies kann ich leider nur manuell durch Inaugenscheinnahme feststellen). Die Taktung sagt mir aber wieviel Gesamtmenge der Bezirk erhält. Daraus muss ich, bzw. der Anwender schliessen, wie viele Zettel zu produzieren sind.
    Wenn ich also in einer Maske die Anzahl 20 vorgebe, in dem Bezirk eine Taktmenge 45 steht heisst das, das das Programm mir für die Box 2 (Menge 21-40) einen Zettel drucken soll (also eine Kopie der Zeile erstellen) und für die 3. Box (Menge 41-45) einen weiteren Zettel.
    Fakt ist, das jede Woche in jedem Bezirk eine andere Taktung (Menge) steht. Ich muss dann anhand des Volumens entscheiden wieviel in eine Box passt. Es kann also sein, das einmal 50 Takte in eine Box passen und nächste Woche muss ich diese Menge auf 3 Boxen verteilen.


    Insofern ist die Maske für mich das Eingabemedium um aufgrund der Taktung die Anzahl der zu kopierenden Zeilen, also Anzahl der Zettel vorgibt.

    Wenn ich diese Aufgabe also manuell erledige, mache ich es am Ende um nicht durcheinander zu geraten. Passiert dieser Vorgang aber per Makro ist die Zeit unerheblich, sodass es auch am Anfang erledigt werden könnte.

    Vielleicht ist meine Erklärung deshalb so kompliziert weil ich nicht genau weiss was per Makro möglich bzw von der Reihenfolge her sinnvoll ist. Ich habe ja aufgeschrieben was ich wann tun muss wenn ich alles manuell erledige.
     
  10. fette Elfe Erfahrener User
    Hallo Jürgen,

    ich glaube, so langsam kommen wir der Sache näher.
    Also ist die "Taktung" nicht die Anzahl der Zettel, sprich benötigter Zeilen?
    Es wird also zusätzlich eine Zahl benötigt, anhand derer das Makro dann die Zeilen entsprechend kopieren soll?

    Dann würde ich folgendes vorschlagen:
    Per Makro wird in den jeweiligen Bezirkslisten eine zusätzliche Spalte rechts neben der Taktung eingefügt.
    Diese Spalte wird manuell vom User mit der Anzahl der benötigten Zettel/Boxen gefüllt (eine Spalte mit Num-Block und Enter sollte ja rechts fix gefüllt sein, jedenfalls nicht langsamer als in einer Maske).
    Ist dies erledigt, drückt der User einen Button, per Makro werden die Zeilen entsprechend vervielfältigt, und die zusätzliche Spalte wird wieder gelöscht, damit es beim Seriendruck zu keiner Verwirrung kommt.

    Wäre dies für vorstellbar?


    Übrigens, per Makro ist (fast) alles realisierbar.
     
    fette Elfe, 23. September 2012
    #10
  11. greyhair Erfahrener User
    Hallo Achim,
    genau richtig. Allerdings bleiben am Ende der Formatierung etwa 2500 Zeilen. Jetzt manuell etwa eintragen ist doch sehr umständlich. Schön wäre es doch, wenn das Makro jede Zeile in der Takte-Spalte absucht und entsprechend der Vorgabe (Eingabemaske) eine Kopie der Zeile vornimmt.

    Ziel sollte es sein das der User später
    1. Die Daten aus SAP zieht
    2. Die Eingabe Anzahl vornimmt
    3. Das Makro per Button startet und
    4. Nach Beendigung des Makro die Datei an eine weitere Person verschicken kann.

    Jedes manuelle Eingreifen führt unweigerlich zu Fehlern denke ich
     
  12. fette Elfe Erfahrener User
    Hallo Jürgen,

    also ist der Faktor den Du eintragen willst für jede Zeile gleich?
    Das würde bedeuten, es wird einmalig (z.Bsp.) "20" eingetragen, und das Makro errechnet dann für alle Zeilen, wie oft diese "20" in die Taktung der jeweiligen Zeile hinein passt, und kopiert die Zeile entsprechend oft?

    Ich habe die ganze Zeit gedacht, Du müsstest für jede einzelne Zeile jeweils einen eigenen Wert eingeben...
    Wenn ich Dich jetzt endlich richtig verstanden habe, dann ist das kein Aufwand...
     
    fette Elfe, 23. September 2012
    #12
  13. greyhair Erfahrener User

    Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen

    Hallo Achim,

    warum jetzt Deine letzte Antwort hier nicht zu sehen ist... keine Ahnung.

    ja genau, der Faktor ist immer gleich.

    Super wenns klappen würde
     
  14. fette Elfe Erfahrener User
    Hallo Jürgen,

    jetzt bin ich doch erst recht spät dazu gekommen mich um Dein Makro zu kümmern...
    Dafür habe ich aber ein wenig "rumgespielt", und ein paar Sachen eingebaut, die Du vielleicht garnicht brauchst.
    Nimm halt raus was Du nicht möchtest, wenn Du dabei Hilfe brauchst, frag ruhig.


    Also, für den User stehen die folgenden Schritte an:
    - die Export-Datei aus SAP generieren und am besten im gleichen Ordner wie die Datei mit dem Makro abspeichern
    - die Datei mit dem Makro öffnen, Makros erlauben und den "Button" drücken
    - den Faktor für die Taktung eingeben
    - die generierten "Bezirksdateien" verschicken/verarbeiten


    Arbeitsweise des Makros (Kurzfassung):
    - im Ordner wo die Datei mit dem Makro gespeichert ist, werden alle eventuell vorhandenen "BezirksDateien" gelöscht
    - das Datei-Auswahl-Fenster von Windows öffnet sich, damit man die SAP-Export-Datei auswählen kann
    - die ausgewählte Datei wird geöffnet
    - eine InputBox wird geöffnet, damit der User den Faktor für die Taktung eingeben kann
    - die Liste mit dem SAP-Export wird bearbeitet > Spalten und Zeilen löschen (wie von Dir vorgegeben) und nach Bezirk sortieren
    - für jeden Bezirk in dieser Liste (nur "B" und erste Zahl) wird nun eine eigene Datei erstellt, die entsprechenden Zeilen hineinkopiert und aus der Export-Datei gelöscht
    - die jeweilige Bezirksdatei wird noch nach Deinen Vorgaben bearbeitet und im gleichen Ordner wie die Datei mit dem Makro gespeichert
    - wenn die Export-Datei keine Einträge mehr enthält wird sie geschlossen und direkt von der Festplatte gelöscht
    - damit der User nicht unnötig "klicken" muss, wird nun die Datei mit dem Makro geschlossen und der entsprechende Ordner im Explorer geöffnet, damit der User die "Bezirksdateien" direkt verschicken/verarbeiten kann


    Das Blatt in dem sich der CommandButton befindet, kannst Du ja gerne noch ein wenig gestalten/beschriften/umbenennen, je nach Geschmack.
    Oder, falls es sich anbietet, baue den Button und den Code in eine vorhandene Datei ein.

    Damit am Ende das Beenden der Excelmappe sinnvoll klappt, habe ich eine Abfrage eingebaut, ob noch andere Excelmappen geöffnet sind. Sind noch andere geöffnet, wird nur die Mappe mit dem Makro geschlossen. Ist dies aber die einzige, dann wird Excel komplett beendet. Damit dies ohne nerviges Nachfragen klappt, setze ich im "Workbook_BeforeClose-Ereignis" den Wert "ThisWorkbook.Saved = True".
    Falls Du an dieser Mappe also etwas verändern willst, speichere immer manuell bevor Du sie schließt.


    Am besten Du erstellst Dir irgendwo einen neuen Ordner, speicherst meine Datei dorthinein, speicherst eine Kopie von einem SAP-Export (nimm erstmal eine verkürzte Liste) ebenfalls dorthinein, und probierst mal aus was passiert.

    Wenn Du etwas von dem Code nicht verstehst, schau Ihn Dir im Einzelschrittmodus an. Verstehst Du ihn danach immer noch nicht, frage nach, ich erkläre ihn Dir gerne.
    Wenn Du etwas geändert haben möchtest und dabei Hilfe brauchst, frage ruhig.



    Ich hoffe geholfen zu haben.
     

    Anhänge:

    fette Elfe, 24. September 2012
    #14
  15. greyhair Erfahrener User
    Hallo Achim,
    das sieht soweit ja gut aus. Leider wird mir ein Fehler gemeldet bei: Tabelle nach Bezirk sortieren. In der nächsten Zeile with . sort wird sort blau hinterlegt und das Makro stoppt. Fehlermeldung heisst: Fehler beim Kompilieren Methode oder Datenobjekt nicht gefunden
     
Thema:

Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen

Die Seite wird geladen...
  1. Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen - Similar Threads - VBA Zahlen Spalte

  2. Summieren farbiger Zahlen anhand des Farbcodes ohne VBA

    in Microsoft Excel Hilfe
    Summieren farbiger Zahlen anhand des Farbcodes ohne VBA: Hallo liebes Forum, welche Formel muss ich eingeben, wenn ich farbige Ziffern (z.B. rot = Farbcode 3; grün = 4) addieren möchte. Danke im voraus für die schnelle Antwort Gruß mfkathie
  3. Makro/VBA Text in Zahl umwandeln

    in Microsoft Excel Hilfe
    Makro/VBA Text in Zahl umwandeln: Hallo liebes Forum, ich habe eine Frage und bin bisher leider nicht so wirklich fündig geworden :oops: Aber ich bin mir sicher, dass ich hier Hilfe bekomme *;)* In meiner Arbeitsdatei sind...
  4. VBA: Zahlen als char eintragen

    in Microsoft Excel Hilfe
    VBA: Zahlen als char eintragen: Hallo, ich bastel mir gerade eine kleine Tabelle, die mir eine Textzeile in LCD-Schrift übersetzt. Dafür habe ich mir ein 8x40-Zellengitter gebastelt, welches ein altes Display darstellen soll....
  5. VBA Hilfe für Zahlen eingeben und addieren + zellinhalt löschen

    in Microsoft Excel Hilfe
    VBA Hilfe für Zahlen eingeben und addieren + zellinhalt löschen: Hallo Leute ich brauche dringend Hilfe von einem VBA Spezialisten. Ich hoffe ihr seit mir nicht böse wenn ich sage das ich alles in der Datei beschrieben habe. Würde mich sehr freuen wenn jemand...
  6. Zahlen nach übernahme löschen (VBA)

    in Microsoft Excel Hilfe
    Zahlen nach übernahme löschen (VBA): Hallo Leute ich würde gerne wissen ob in meiner Tabelle per VBA möglich ist das Zahlen die ich z.b in Zelle D7 eingebe die dann in Zelle P13 Addiert werden automatisch in Zelle D7 gelöscht...
  7. VBA gefüllte Spalten/Zellen bis zur nächsten leeren Zählen

    in Microsoft Excel Hilfe
    VBA gefüllte Spalten/Zellen bis zur nächsten leeren Zählen: Hallo zusammen, ich bin neu auf dem Gebiet, habt Nachsicht. Ich habe folgendes Problem... Ich habe in Tabellenblatt 1 Zellen die beschrieben werden, diese werden über einen Button in Zeile 4...
  8. Zahlen in Spalten mit VBA dividieren

    in Microsoft Excel Hilfe
    Zahlen in Spalten mit VBA dividieren: Hallo zusammen, ich habe eine Frage zu VBA und Excel. Ich bin in VBA ein Anfänger und eigentlich auch in Excel. Ich meine von mir gesuchte Lösung habe ich auch schon fast im Forum gefunden. Nur...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden