VBA / Makro gesucht!?

Hallo liebe Experten!

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

Gruß posy

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 :wink:

HTH

moin HTH,

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]

Sowas?
Hallo Solveigh,

hier ist ein kurzes Makro, was Dir helfen sollte:

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.

Grüße,

Anwar

moin moin anwar,

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]

Hallo,

vielen dank für deine schnelle hilfe!

Bitte. :smile:

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).

Klappt’s jetzt?

Anwar

1 „Gefällt mir“

hey ya!

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).
    Klappt’s jetzt?

yep! :smile:)) 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

Anwar

Hi,

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. :smile:
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.

Grüße,

Anwar**

1 „Gefällt mir“

moin!

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ß :smile:

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

solveigh

Hallo,

hast Du aber einen Dusel, dass ich nochmal so weit runtergucke! :smile:

=> B1, A2 => B2… A500 =>B500. ist sowas machbar??

Eigentlich sollte das Makro in der letzten Version das so tun. :smile:
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

Schade.

Grüße,

Anwar

Hallo,

hast Du aber einen Dusel, dass ich nochmal so weit
runtergucke! :smile:

yep, das glaube ich auch! :smile:)

=> B1, A2 => B2… A500 =>B500. ist sowas machbar??

Eigentlich sollte das Makro in der letzten Version das so tun.

)

ups, dann habe ich nix gesagt und werd s einfach mal ausprobieren/ laufen lassen und mich danach noch mal melden, je nachdem :wink:

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.

werde ich gerne machen falls ich s nicht hinbekomme, sind keine geheimen daten…

würde ja gerne mal zu einem benutzertreffen fahren aber bei
meinem bißchen freizeit sieht s momentan nicht gut aus dafür

Schade.

bin soooo froh gerade einen neuen job zu haben dass die firma das gleich ausnutzt und mich von 7:00 bis 20:30 arbeiten läßt… :frowning:

greetings back
solveig

Grüße,

Anwar

fehlermeldung:

„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)…

was habe ich falsch gemacht?

Hi,

was habe ich falsch gemacht?

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.

Grüße,

Anwar