Aus Excel Artikelnummern in neue Tabelle kopieren

canen68

Cadet 3rd Year
Registriert
Juli 2017
Beiträge
44
Hallo,

erstmal muss ich zugeben, was Makros oder VBA angeht bin ich eine absolute Niete.
Nun zu meinem Problem, ich soll aus einer excel Tabelle alle Artikelnummern herauskopieren und in eine neue Tabelle oder auch in ein *.txt file einfügen.
Die Excelliste besteht im Grunde nur aus Spalte A und hat hunderte Zeilen.
In jeder Zeile Steht das Produkt, die Größe, Gewicht usw. und eben auch die Artikelnummer. Das ist auch mein Hauptproblem, die Artikelnummer steht ja nie an gleicher Stelle, aber sie besteht immer aus 6 Zahlen und beginnt immer mit einer 2.

Hat einer eine rettende Idee? Ich bin für jede Hilfe dankbar.

LG Canen
 
Was heißt, sie steht nie an gleicher Stelle?
Die Spalten müssen doch Überschriften haben, oder nicht?

Ohne VBA kannst du zB filtern und sagen, dass du nur Zahlen zwischen 200.000 und 299.999 haben willst.
Ergänzung ()

ryan_blackdrago schrieb:
Ein Datensatz sieht so aus? Handschuhe,20cm,100g,212345

Wenn es so ist, dann am Besten "Daten" -> "Text in Spalten" und dann filtern.
Ansonsten kann man auch was in VBA schreiben, dafür brauch ich aber etwas mehr infos.

Beispiel Code.
Code:
Sub test()
Dim vergleich As Boolean
Dim textlength As Integer
Dim strTeil As String


For i = 1 To 10
    textlength = Len(Cells(i, 1).Value)
    For j = 0 To textlength - 6
        strTeil = Right(Cells(i, 1), 6)
        vergleich = strTeil Like "2#####"
        If vergleich Then
            Cells(i, 2) = strTeil
        End If
    Next j
Next i

End Sub
 
Zuletzt bearbeitet:
Hi erstmal vielen Dank für Deine schnelle Antwort.
Überschriften gibt es hier keine. Die Tabelle wird direkt aus dem Bestellsystem gezogen.
Wie gesagt ich habe nur Text in der Spalte A und da steht dann als Beispiel:
Com: Martina, Mustermann - dann das Produkt und ob es Reparatur oder Neukauf ist, dann die Artikelnummer 2XXXXX und hinterher die Maße.
Manchmal stehen die Maße aber auch vor der Artikelnummer. Also ich meinte mit nie an gleicher Stelle, dass die Anzahl der Zeichen, vor der Artikelnummer variieren kann. War blöd ausgedrückt.
Aber wenn ich das über Text in Spalten hin bekomme wäre das natürlich super. Aber wo deklariere ich, dass ich die 6 stellige Zahl die mit 2 beginnt filtern will?

Vielen Dank nochmal für Eure Hilfe.
 
Versuch es mal mit dem Code, den ich gepostet habe. Dazu musst du wahrscheinlich noch die "Entwicklertools" aktivieren. Google sagt wies geht. Dann ein Makro erstellen und meinen Code kopieren.

Dann sollte in Spalte 2 die Artikelnummer geschrieben werden. Das Beispiel ist erstmal nur für die ersten 10 Zeilen, kann aber beliebig ausgebaut werden.
 
canen68 schrieb:
Überschriften gibt es hier keine. Die Tabelle wird direkt aus dem Bestellsystem gezogen.

Dann ist der Export aus dem Bestellsystem mal unglaublich schlecht gelöst. Wie kann man sämtliche Felder aus der Eingabe einfach in eine einzige Saplte zusammenhauen? Bietet das Ding keinen .csv-Export oder irgendeine andere Art, die Daten zu exportieren?

canen68 schrieb:
Aber wo deklariere ich, dass ich die 6 stellige Zahl die mit 2 beginnt filtern will?

Gib uns Beispiele für alle Varianten, die auftreten können, oder probier’s selbst aus mit dem Weg, den dir ryan_blackdrago genannt hat. Wenn die Länge tatsächlich so stark variiert, kann man das am Ende auch mit einem regulären Ausdruck lösen, aber das ist der letzte Ausweg.

Ohne Beispiele kann man kein Muster erstellen.

Evtl. auch mal hier vorbeischauen.
 
Hier ein Auszug:

com: Martina, Mustermann - Axure für Wiedereinsatz 910 2XXXXX - 24x150x2,4 -;2
com: Mustermann - für modell axa 910 2XXXXX 12 / 28x12x1,2 - dunkelblau
com: Wiedereinsatz: Axa - mit anbaufunktion - 810 2XXXXX - ;2
com: Mustermnn, Max 38x120x1,4 - orange - 710 2XXXXX / metallic

usw. also wie man sieht ist es ein Riesendurcheinander, einzig die 2 und die 6 stellen sind konstant.

@alchemist: Die Entwicklertools sind aktiviert und den Code habe ich eingefügt. Leider passiert nichts wenn ich ihn starte.
 
Zuletzt bearbeitet:
Richtig... Mein Fehler :(
Code:
Sub test()
Dim vergleich As Boolean
Dim textlength As Integer
Dim strTeil As String


For i = 1 To 10
    textlength = Len(Cells(i, 1).Value)
    For j = 1 To textlength - 6
        strTeil = Mid(Cells(i, 1), j, 6)
        vergleich = strTeil Like "2#####"
        If vergleich Then
            Cells(i, 2) = strTeil
        End If
    Next j
Next i

End Sub

Das "2#####" ist übrigens so ein regulärer Ausdruck ;) Der besagt eben, dass wir nach einer 2 gefolgt von 5 anderen beliebigen Ziffern suchen. Sowas eignet sich zB auch gut um Telefonnummern zu finden ;)
 
Zuletzt bearbeitet:
Super,
danke Dir vielmals Alchemist, das Makro funktioniert jetzt einwandfrei. Somit kann ich mir dann alle Artikelnummern in eine txt kopieren und gut. Ich danke Dir vielmals für Deine Hilfe :)
 
Gerne!
 
Hallo zusammen,

Alchemist hatte mir mit seinem Makro neulich sehr geholfen. Jetzt würde ich dieses Makro gerne wieder verwenden um eine 6 stellige Zahl hinter einem L zu kopieren. Ich dachte eigentlich kann es nicht so schwer sein, das vorhandene Makro zu verändern, aber ich bin kläglich gescheitert :-(
Die Zahl ist jetzt in Spalte L und es soll die 6 stellige Zahl in Spalte M kopiert werden. Kann mir jemand sagen was ich dazu am Makro von Alchemist verändern muss?

Vielen Dank vorab.
 
Code:
Sub Test()
Dim vergleich As Boolean
Dim textlength As Integer
Dim strTeil As String
Dim quellSpalte, zielSpalte As Integer
quellSpalte = 12 'sollte L sein, wenn ich mich nicht verzählt habe
zielSpalte = 13 'M
 
For i = 1 To 500 'Fängt in Zeile 1 an bis Zeile 500
    textlength = Len(Cells(i, quellSpalte).Value)
    For j = 1 To textlength - 7
        strTeil = Mid(Cells(i, quellSpalte), j, 7)
        vergleich = strTeil Like "L######"
        If vergleich Then
            Cells(i, zielSpalte) = Right(strTeil, 6)
        End If
    Next j
Next i
End Sub
 
Guten Morgen zusammen.
Und einmal mehr, vielen Dank Alchemist. Hat super geklappt :)
 
Zurück
Oben