Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn und in Makro

wenn und in Makro
gerhard
Hallo,
Möchte folgendes Problem lösen.
in der Exceltabelle sind in der Spalte A (Zeile1-1000) die Produktnr. eingetragen, Spalte B die Beschreibung und Spalte C die Produktgruppe. die Daten werden monatlich in ein neues Datenblatt geladen. Nun müssen bestimmte geladene Produktnr. (immer dieselben) mit einer anderen Produktnr. ersetzt werden, wenn diese in der Produktgruppe vorkommen.
Spalte A Spalte B Spalte C
10.64.001 Abc Gruppe 10
10.64.099 ....
20.65.001 dfg Gruppe 20
20.65.099 ....
30.66.001 hji Gruppe 30
30.66.099 ....
etc.
Also: Wenn Produktnr. 10.64.001 in Gruppe 10 vorkommt, dann ersetzen mit 10.64.001A. Es sind ca. 20 Nr. zu ersetzen. Dies möchte ich mit einem VBA-Makro erledigen.
Danke.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Klärung der Aufgabenstellung
06.09.2011 17:02:55
Erich
Hi Gerhard,
ein paar Infos fehlen wohl noch. Ich versuch mal zu beschreiben, was ich verstanden habe:
Du hast eine Mappe "Prod.xls" mit einem Tabellenblatt "Monat 2011-09".
Darin sind die Spalten A:C über ca. 1000 Zeilen mit Texten (keinen Zahlen) gefüllt.
Spalte A: Produktnr.
Spalte B: Beschreibung
Spalte C: Produktgruppe
In Zeile1 stehen die Spaltenüberschriften.
Frage 0:
Soll der Makrocode in der Mappe Prod.xls stehen?
Frage 1:
Sind die Zeilen nach der Produktgruppe sortiert? (Oder kann es sein, dass nach Gruppe 2 wieder Sätze der Gruppe 1 kommen?)
Frage 2:
Sind die Zeilen innerhalb der Produktgruppen nach Produktnr. (lexikografisch) sortiert?
Frage 3:
Steht in jeder Zeile die Produktgruppe oder nur in der Zeile, in der eine Produktgruppe beginnt?
(Das kann man an den "...." in deiner Beschreibung nicht erkennen...)
Frage 4:
Kann eine Produktnr. mehrfach in Spalte A auftreten, in derselben oder verschiedenen Produktgruppen?
Zu "Daten werden monatlich in ein neues Datenblatt geladen":
Frage 5:
Bedeutet das, dass der Mappe Prod.xls ein neues Tabellenblatt (mit dem Namen ?) hinzugefügt wird?
Frage 6:
Wie kann das gerade zu bearbeitende Tabellenblatt bestimmt werden?
Soll z. B. immer das erste oder immer das letzte Blatt bearbeitet werden?
Oder muss das Blatt per Dialog vom User bestimmt werden?
Und nun zu den zu ersetzenden Produktnr.:
Frage 7:
Wie liegt die Liste der ca. 20 Ersetzungen vor? Steht sie in einer Tabelle?
Ich vermute diesen Aufbau:
AlteProduktnr - Produktgruppe - NeueProduktnr
Wo soll die Liste stehen (und gepflegt werden)? Direkt in der VBA-Prozedur?
Oder auf einem Tabellenblatt (mit dem Namen ?)?
Sinnvoll wäre es, wenn du eine Beispielmappe hochladen würdest. Dann muss nicht jeder, der etwas für dich tun will,
eine solche Mappe bauen, die dann im Zweifelsfall gar nicht deinen Bedarf trifft...)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Klärung der Aufgabenstellung
07.09.2011 11:18:33
gerhard
Hallo, Erich an soviele Details habe ich nicht gedacht, aber ist logisch, wenn man es erklären soll. Werde ein anderes Mal besser machen.
Frage 0: Ja
Frage 1: Ja, nach Prod.gruppe sortiert
Frage 2: Ja
Frage 3: in jeder Zeile steht die Prod.gruppe
Frage 4: das Produkt kann in mehreren Produktgruppen stehen, aber nicht in derselben
Frage 5: Ja
Frage 6: immer das letzte Tabellenblatt
Frage 7: AlteProduktnr. - NeueProduktnr. - Produktgruppe
Hatte mir gedacht, die Liste direkt in der VBA-Prozedur zu pflegen, wenn es aber besser ist, es über eine Tabelle zu machen, dann auch Tabelle.
Gruß
Tabelle: https://www.herber.de/bbs/user/76503.xls
Anzeige
Rückfragen
07.09.2011 13:11:31
Erich
Hi Gernard,
zu Frage 1 hast du geschrieben, dass die Daten nach Produktgruppe sortiert sind.
In der Beispielmappe ist das nicht so - nach 70.... kommt wieder 10.....
Eine gewisse "Sortierung" kann ich erkennen - erst kommt "...A", dann "...B". Aber das ist doch kein normaler Sort.
Wie sehen deine realen Produktgruppen aus, und sind sie (im Excelsinne) sortiert?
Wegen Frage 6 (immer das letzte Blatt bearbeiten) habe ich das Blatt "zu ersetzen" nach vorn verschoben.
Zu Frage 7: Die Beschreibung in Spalte C spielt für das Makro keine Rolle und wird überlesen, oder?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Rückfragen
07.09.2011 15:06:17
gerhard
Hallo, Erich
zu Frage 1: Produktgruppe A = 10 bis 200 in Zehnerschritte, Produktgruppe B = 10 bis 200 Zehnerschritte
und innerhalb der Produktgruppe sortiert.
zu Frage 7: Kann auch überlesen werden, ja nachdem.
Ich hatte ursprünglich gedacht, die Abfrage folgenderweise zu machen:
z.B.: wenn "Produktnr.=28.36.0001" und "60. Produktgruppe A" dann "28.36.0001b"
dies allerding in einem VBA-Makro, ohne die Formeln in die Zellen zuschreiben und Hilfsspalten einzufügen.
Habe vielleicht zu kompliziert oder auch zu einfach gedacht.
Gruß
Vorschlag
07.09.2011 17:50:11
Erich
Hi Gerhard,
hier mein Versuch, das umzusetzen - als Prozedur zu einem Button:

Option Explicit
Sub cbStart_Click()
Dim lngE As Long, arE, arEL() As String, ee As Long
Dim lngD As Long, arDP, arDG, arDL As String, zz As Long
' Ersetzungsliste (aktives Blatt)
lngE = Cells(Rows.Count, 1).End(xlUp).Row - 1
arE = Cells(2, 1).Resize(lngE, 4)
ReDim arEL(1 To lngE)
For ee = 1 To lngE
arEL(ee) = arE(ee, 4) & "#|" & arE(ee, 1)       ' Grup+Prod
Next ee
With Sheets(Sheets.Count)           ' bearbeite letztes Blatt
lngD = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
arDP = .Cells(2, 1).Resize(lngD)
arDG = .Cells(2, 3).Resize(lngD)
For zz = 1 To lngD
arDL = arDG(zz, 1) & "#|" & arDP(zz, 1)      ' Grup+Prod
For ee = 1 To lngE
If arDL = arEL(ee) Then
.Cells(zz + 1, 1) = arE(ee, 2)         ' ersetze
Exit For
End If
Next ee
Next zz
.Select                                   ' Blatt anzeigen
End With
End Sub
Und hier die Beispielmappe: https://www.herber.de/bbs/user/76512.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Vorschlag
09.09.2011 11:28:29
gerhard
Hallo, Erich
habe deine Prozedur eingebaut und es funktioniert.
Vielen herzlichen Dank.
Grüße - Gerhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige