Ich habe ein Problem an das ich nicht genau weiß wie ich da rangehen soll (nicht mal wie ich s einigermaßen verständlich erklären soll:wink:)
Stell dir folgendes vor zur Veranschaulichung: in spalte A stehen „Artikelnummern“ –also zahlen-, in spalte B dann vielleicht die Artikelbezeichnung –sprich text-, spalten C & D vielleicht Lagermengen und Preise (also wieder Zahlen) usw. Nun soll quasi diese Tabelle in eine andere form gebracht werden so als würden neue Artikelnummern vergeben werden (bzw. die alten umbenannt). Was ich möchte ist also eine neue Tabelle wo ich sage die alte Artikelnummer war 0815 und die neue Artikelnummer dafür lautet nun 4711, Makro (?) suche / kopiere mir alle Daten –die gesamte zeile- von dem Artikel 0815 alt in diese neue Tabelle unter 4711.
Frage: wie müsste dieses Makro aussehen? Kannst du mir vielleicht weiter helfen?
Jede antwort ist sehr willkommen!!! Vielen dank schon mal im voraus
hatte heute was ähnliches
ich will aber auf Makro o.ä. verzichten…
Drum der Hinweis, dass Du das da verwenden könntest:
=SUMMEWENN($B$2:blush:B$16;$A24;C$2:C$16)
ist jetzt ein Auszug einer meiner Verweise…
In A24 müsste die Nr. suchen, auf die verwiesen wird also z.b. Deine alte Nummer. Daneben könntest Du jetzt Deine neue nummer schreiben…
Bei mir war halt noch der Fall, dass ich mehrere zusammengefasst habe sprich ich habe mir eine Spalte gemacht, wo ich die Bezeichnung reingeschrieben habe und die dann gesucht habe - alle Werte, die gleich waren wurden so zusammengezählt… vllt ist das ja auch für Deine Zwecke hilfreich
erst mal danke für deine schnelle antwort!
ich muß allerdings vorerst checken ob ich deinen tipp verwirklichen kann *grübel*
diese „alte“ tabelle bekomme ich mindestens monatlich als neue auswertung und muß sie dann halt in die neue form „übersetzen“. die
tabellen sind einfach zu umfangreich als dass ich da die neue nr. jedesmal daneben schreiben könnte, schon wenn ich das einmalig in angriff nehmen würde wäre es stundenfüllend ;-(
danke und gruß posy
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Sub Nummern_ändern()
Startzeile = 1
endzeile = 10
Nummernspalte = 1
For i = Startzeile To endzeile
Nummer = ActiveSheet.Cells(i, Nummernspalte).Value
Select Case Nummer
Case 1
NeueNummer = 100
Case 2
NeueNummer = 200
Case 3
NeueNummer = 300
End Select
Worksheets(„NeuesBlatt“).Rows(i).Value = ActiveSheet.Rows(i).Value
Worksheets(„NeuesBlatt“).Cells(i, Nummernspalte).Value = NeueNummer
Next i
End Sub
Startzeile ist die erste Zeile, wo das Makro loslaufen soll (meistens 1 oder 2).
Endzeile ist die letzt Zeile, die noch bearbeitet werden soll.
Nummernspalte ist die Spalte in der die Zahl steht (in Deinem Beispiel die 1).
Case 1,2,3 usw. da musst Du die alten Nummern reinschreiben.
Neuenummer ist die neue Nummer, die der Artikel bekommen soll.
Das ganze ist jetzt mal eben so hingeschustert, Eleganz, z.B. Bereich markieren und nur den konvertieren etc. musst Du selber machen, wenn Du sowas haben willst.
vielen dank für deine schnelle hilfe!
habe deinen makrovorschlag ausprobiert aber irgendwas mache ich wohl falsch, wenn excel das makro durchlaufen lassen soll gibt es immer eine fehlermeldung ‚index ausserhalb des gültigen bereiches‘.
kannst du mir weiterhelfen?
danke und gruß
solveigh
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
habe deinen makrovorschlag ausprobiert aber irgendwas mache
ich wohl falsch, wenn excel das makro durchlaufen lassen soll
gibt es immer eine fehlermeldung ‚index ausserhalb des
gültigen bereiches‘.
kannst du mir weiterhelfen?
Mal schauen, kann an verschiedenem liegen:
Du hast einen der Parameter nicht richtig gesetzt.
Du hast das Makro im VBA-Editor ausgeführt (dann klappt der Verweis auf ‚activesheet‘ nicht, es ist ja keines ‚active‘)
Dein „neues“ Sheet heisst nicht „NeuesBlatt“. Dann musst Du die Bezeichnung im Makro ändern! Dabei kannst Du auch gleich aus dem ‚activesheet‘ ein ‚worksheets(„XXX“)‘ machen (nicht vergessen für XXX den Namen einzutragen).
Du hast einen der Parameter nicht richtig gesetzt.
Du hast das Makro im VBA-Editor ausgeführt (dann klappt der
Verweis auf ‚activesheet‘ nicht, es ist ja keines ‚active‘)
Dein „neues“ Sheet heisst nicht „NeuesBlatt“. Dann musst Du
die Bezeichnung im Makro ändern! Dabei kannst Du auch gleich
aus dem ‚activesheet‘ ein ‚worksheets(„XXX“)‘ machen (nicht
vergessen für XXX den Namen einzutragen).
Klappt’s jetzt?
yep! )) vielen dank!
sag mal wäre es auch möglich dass ich statt „case 1“ schreibe das makro anweise sich z.b. die alten nr. aus einer zelle zu ziehen also sagen wir mal aus Z1 und „neueNummer“ entsprechend dann aus Z2?
kann man sowas auch programmieren?
VIELEN DANK NOCHMAL
gruß posy
sag mal wäre es auch möglich dass ich statt „case 1“ schreibe
das makro anweise sich z.b. die alten nr. aus einer zelle zu
ziehen also sagen wir mal aus Z1 und „neueNummer“ entsprechend
dann aus Z2?
kann man sowas auch programmieren?
Klar.
Dann musst Du nur vorher die Zahlenpaare auslesen und in der „Select Case“-Anweisung verwursten. Das sieht dann etwa so aus:
Sub Nummern_ändern()
Startzeile = 1
endzeile = 10
Nummernspalte = 1
**Nummernspalte_alt=1
Nummernspalte_neu=2
Nummernauslesestart=1
Nummernausleseende=10
For x= Nummernauslesestart to Nummernausleseende
Alte_nummer(x)=worksheets(„XXX“).cells (i,Nummernspalte_alt).value
Neue_nummer(x)=worksheets(„XXX“).cells(i,Nummernspalte_neu).value
next x
For i = Startzeile To endzeile
Nummer = ActiveSheet.Cells(i, Nummernspalte).Value
Select Case Nummer
Case Alte_nummer(1)
Worksheets(„NeuesBlatt“).Rows(i).Value = ActiveSheet.Rows(i).Value
Worksheets(„NeuesBlatt“).Cells(i, Nummernspalte).Value=Neue_Nummer(1)
Case Alte_nummer(2)
Worksheets(„NeuesBlatt“).Rows(i).Value = ActiveSheet.Rows(i).Value
Worksheets(„NeuesBlatt“).Cells(i, Nummernspalte).Value=Neue_Nummer(1)
Case Alte_nummer(3)
Worksheets(„NeuesBlatt“).Rows(i).Value = ActiveSheet.Rows(i).Value
Worksheets(„NeuesBlatt“).Cells(i, Nummernspalte).Value=Neue_Nummer(1)
etc…
End Select
Next i
End Sub
Man könnte es bestimmt noch viel eleganter programmieren, aber das sollte reichen, ist ja nur ein Gelegenheitsmakro.
VIELEN DANK NOCHMAL
Bitte, gern geschehen (ich nehm auch Sterne *g*). Schau doch mal in das Brett „Benutzertreffen“, da planen wir gerade ein Treffen in Hamburg.
bin erst jetzt dazu gekommen mich an das marko bzw an das problem zu setzen…
nochmals danke für deine hilfe, aber wenn ich das makro so schreibe muß ich ja leider trotzdem ca. 600 alte nummern in das makro reinschreiben, wozu ich relativ wenig lust habe und das risiko dass ich irgendwo nen zahlendreher reinbaue oder sonst einen fehler ist recht hoch. also was ich bräuchte wäre ein makro das „mitdenkt“ und von alleine weiter zählt: A1 => B1, A2 => B2… A500 =>B500. ist sowas machbar?? danke und gruß
Bitte, gern geschehen (ich nehm auch Sterne *g*). Schau doch
mal in das Brett „Benutzertreffen“, da planen wir gerade ein
Treffen in Hamburg.
Grüße,
Anwar
würde ja gerne mal zu einem benutzertreffen fahren aber bei meinem bißchen freizeit sieht s momentan nicht gut aus dafür
hast Du aber einen Dusel, dass ich nochmal so weit runtergucke!
=> B1, A2 => B2… A500 =>B500. ist sowas machbar??
Eigentlich sollte das Makro in der letzten Version das so tun.
Schick mir doch einfach mal die Daten, bzw. ein verändertes Sample, falls es sensitive Daten sind, dann mach ich das eben. Mailaddy steht ja oben.
würde ja gerne mal zu einem benutzertreffen fahren aber bei
meinem bißchen freizeit sieht s momentan nicht gut aus dafür
„fehler beim komplilieren“
„Sub oder funktion nicht definiert“
markiert ist die allererste zeile "sub nummern_ändern()
und dann noch die zeile mit "alte_nummer(x)…
Schubs mir mal das Ding rüber, ich kümmer mich drum und dann kannst Du es ja nochmal anschauen. Ich vermute mal, dass irgendein Objekt (Tabellenblatt etc.) anders heißt, als im Makro.