Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Werte in einer Spalte in eine Tabelle sortieren und zuordnen
#1
Hallo zusammen,

ich würde mich freuen, wenn mir jemand in diesem speziellen Fall helfen kann Smile

ich spiele die Daten eines Scanners in eine Excel-Tabelle ein. Die Werte werden untereinander in einer Spalte angezeigt. Ich muss die Werte aber in eine Tabelle formatieren.

Ich scanne zu erst einen Stellplatz und dann den Karton, der auf diesem Stelllplatz steht. Es kommt aber auch vor, dass mehrere Kartons auf einem Stellplatz stehen.

Die Spalte sieht wie folgt aus:
Stellplatz 1
Karton 1
Stellplatz 2
Karton 2
Karton 3
Karton 4
Stellplatz 3
Karton 5
Karton 6
Stellplatz 4
Karton 7

Ich benötige nun eine Tabelle mit zwei Spalten
Spalte A: Stellplatz
Spalte B: Karton

In jeder Zeile muss der Kartom einem übergeordneten Stellplatz zugewiesen werden. Das obige Beispiel müsste dann so aussehen:
Stellplatz 1   Karton 1
Stellplatz 2   Karton 2
Stellplatz 2   Karton 3
Stellplatz 2   Karton 4
Stellplatz 3   Karton 5
Stellplatz 3   Karton 6
Stellplatz 4   Karton 7


Kann mir jemand bei diesem Problem helfen? Ich möcht ungern händisch die Tabelle erstellen - das ist zu aufwendig und fehleranfällig.

Ganz liebe Grüße
Antworten Top
#2
Hi,

woran kann man erkennen, was Stellplatz und was Karton ist?

Darf es VBA sein? Falls ja, solltest du entweder fähig sein, das auf deine Tabelle anzupassen oder eine Beispieldatei hier einstellen, die genau dem Aufbau deiner Datei entspricht.

Wie kommen die Daten vom Scanner in Excel? gibt es da schon eine VBA-Routine? Falls ja, wäre es sinnvoll gleich bei dieser anzusetzen. Falls nein (der Scanner also bloß Tastaturersatz ist), solltest du Karton und Stellplatz in zwei verschieden Spalten scannen. Dann könnte man das auch per Formel lösen.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#3
Die Kartons und der Stellplatz unterscheiden sich in der Nummernsystematik:
Kartons 9-stellig
Steallplatz 11-Stellig

Die Scaner produzieren eine Textdatei. In dieser sind die Werte auch alle untereinander. Soabald ich diese im Excel-öffne sind die werte in einer Spalte.
Ich kann den Scanner also nicht so einstellen, dass die Werte in unterschiedliche Spalten gescannt werden.

Mit VBA kenne ich mich leider nicht aus. Ich habe mal die Beispiel TXT-Datei und die Ziel-Excel-Datei hochgeladen. Vielleicht kannst du damit etwas anfangen?


Angehängte Dateien
.txt   Beispiel-Scanner-Datei.txt (Größe: 319 Bytes / Downloads: 7)
.xlsx   Ziel-Excel-Datei.xlsx (Größe: 8,59 KB / Downloads: 5)
Antworten Top
#4
Hallo

kopiere die Daten deiner Textdatei in das Beispiel Spalte E. Dann drücke den Button.
Ob du VBA verstehtst spielt keine Rolle. Dein Atuo funktioniert, auch wenn du nichts von Motoren verstehst!
Leider ist es eine alte Excel 2003 Datei. Das Makro kannst du in deine Originaldatei in ein Modul kopieren.

mfg Gast 123


Angehängte Dateien
.xls   Ziel-Excel-Datei.xls (Größe: 53 KB / Downloads: 5)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • crssft
Antworten Top
#5
Das klappt super! Vielen Dank dafür!

Ich muss die Excel dann noch weiter bearbeiten und per SVERWEIS noch Daten hinzufügen.
Wenn das Auslesen der Text-Datei so  "einfach" funktioniert, vielleicht kannst du mir dann auch bei der weiteren Bearbeitung der Excel behilflich sein?

Ich habe wieder eine Beispiel-Datei angehängt.

Zur Erklärung: In der Datenbank steht der alte Stellplatz. In der Scanner-Datei wird dann der neue Stellplatz angescannt. Für den späteren Import benötige ich eine Excel, wo sowohl der alte als auch der neue Stellplatz enthalten ist.

Tabellenreiter "Import": Das müsste die fertige Tabelle sein, die wir dann zum weiteren Import nutzen
Tabellenreiter "Datenbank": Diese Daten ziehe ist aus der bestehenden Datenbank.

Am Besten würde auch das vorherige VBA (Text-Datei in Spalten) in der selben Excel-Datei mit verarbeitet werden.

Wenn das alles per VBA funktionierten würde, dann würde mir das den Tag retten 17 19


Angehängte Dateien
.xlsx   Import-Excel.xlsx (Größe: 11,72 KB / Downloads: 2)
Antworten Top
#6
Hi,

hier meine Lösung zu deinem Ursprungsproblem...
Code:
Sub Einlesen()
Dim i As Long
Dim Eingabe As String
Dim Stellplatz As String
i = Tabelle1.Cells(1, 1).CurrentRegion.Rows.Count + 1
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = False
    .ButtonName = "Öffnen"
    .Filters.Add "Text-Datei", "*.txt"
    .FilterIndex = 2
    .InitialFileName = ActiveWorkbook.Path
    .Title = "Text-Datei auswählen"
    If .Show Then
        Open .SelectedItems(1) For Input As #1
        Do While Not EOF(1)
            Line Input #1, Eingabe
            Eingabe = Replace(Replace(Left(Eingabe, 15), " ", ""), vbTab, "")
            If Len(Eingabe) = 11 Then
                Stellplatz = Eingabe
            Else
                With Tabelle1
                    .Cells(i, 1) = Stellplatz
                    .Cells(i, 2) = Eingabe
                    i = i + 1
                End With
            End If
        Loop
        Close #1
    End If
End With
End Sub

Unterschiede zur Lösung von Gast:
  • Die Text-Datei wird ausgewählt und direkt geöffnet. Man muss sie nicht händisch in die Excel-Datei einfügen
  • Bereits vorhandene Einträge werden nicht überschrieben.
  • Die vereinzelt vorhandenen Tabulatoren werden nicht übertragen.
  • Die Unterscheidung zwischen Stellplatz und Karton erfolgt anhand der Länge und nicht anhand des Minus-Zeichens.

@Gast 123: Wieso deklarierst du globale Variablen? Wieso verwendest du 2x If-Then-EndIf anstatt If-Then-Else-EndIf ?
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#7
Hallo


@Helmut  wenn ich mir deine Programmierung ansehe, ich musste sie zweimal lesen, steht ausser Frage wer der bessere Programmierer ist. An den Code mit Datei Öffnen komme ich nicht heran, der ist mir zu hoch. Stört mich aber nicht im geringsten.  IF Else habe ich einfach übersehen, so einfach.  Dim AC + lz1 immer nach ganz oben setzen ist eine Marotte von mir, verwende ich seit Jahren.

Alten und neuen Stellplatz zuweisen ist kein Problem, sofern die Barcode/ Seriennr. in der Datenbank mit der Chargen/ Serien Nr. in der Textdatei identisch ist. Ich gehe mal davon aus und habe ein zweites Beispiel programmiert. Bei mir muss man leider die Text-Datei nach Spalte H kopieren. Vielleicht fällt Helmut dazu ein besserer Code ein. Mir soll es Recht sein.


mfg Gast 123


Angehängte Dateien
.xls   Import-Excel.xls (Größe: 35,5 KB / Downloads: 2)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • crssft
Antworten Top
#8
Hi Gast 123,

ich mach das Programmieren nur hobbymäßig. Das mit dem Filedialog habe ich auch irgendwo abgeschaut. Und der Rest ist hier nur reine Anwendung allgemeiner Programmierregeln. Das mit dem "Datei als Text" öffnen, musste ich auch erst nochmals nachschlagen. Open xxx For Input As #y hatte ich noch im Hinterkopf und dass man damit Zeilen in Strings lesen kann auch. Aber die Details, wie man das macht, die habe ich der Online-Hilfe entnommen.

Dann habe ich den Rest geschrieben. Sprich die ersten 15 Zeichen übernommen und die Leerzeichen durch nichts ersetzt. Und dann habe ich mich gewundert, dass ich nur 2 Zeile statt der erwarteten 3 bekommen habe. Erst längeres debuggen hat dann gezeigt, dass in Datei nicht nur Leerzeichen, sondern auch Tabulatoren enthalten sind. Und beim letzten Eintrag führt das dann dazu, dass die Kartonnummer plötzlich 11 statt 9 Zeichen hat, somit als Stellplatz erkannt wird und nur dieser neu gemerkt wird. Da keine weitere Kartonnummer kommt, wird dieser "Stellplatz" niemals ausgegeben. Lösung war dann, die Tabulatoren ebenfalls durch nichts zu ersetzen.

Du siehst, ist alles nur eine Frage der Ausdauer.

So zum neuen Problem: Dein Code sieht auf den ersten Blick gut aus. Da mir aber noch nicht ganz klar ist, was crssft genau will, mach ich mich nicht daran da etwas zu programmieren.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • crssft
Antworten Top
#9
Hallo

zur Zeit von CPM, als Commodore 64 aufkam, lernte ich in Mascvhinensprache Dateien zu öffnen und zu bearbieten.
Schrieb mir ein eigenes Programm, nur um gelöschte Dateien aufzulisten, konnte sie auch reaktivieren.

Mein grösster Cou, ich knackter den Passwortschutz, indem ich auf meiner 5 1/4 " Diskette nur drei Byts änderte.
Mein Chef war baff erstaunt, als er Dateien des Ingenieurs nicht öffnen konnte, meine Diskette sie problemlos öffnete.
Der Trick, ich ersetzte bei Z80 CPU den Sprungbefehl zum Passwortschutz durch drei NOP = 00.  Lang, lang ist es her.
Bei den heutigen modernen CPU Befehlen habe ich aber keinen Durchblick mehr. Zu kompliziert geworden.

mfg Gast 123
Antworten Top
#10
Hallo Gast123,
Hallo HKindler,

vielen Dank für eure Mühen!

Die Variante von HKindler habe ich leider nicht ganz verstanden, weil ich es nicht hinbekommen habe, dass die TXT-Datei dann irgendwie gleich geöffnet wird.

Ich habe nun die Variante von Gast123 getestet. Und es funktioniert wunderbar.
Einzig, ich hatte in der Spalte "Menge" eine wenn-Funktion reingeschrieben, dass wenn ein Serienbarcode in der Zeile vorhanden ist, eine 1 eingetragen wird, ansonsten bleibt die Zelle Leer. Die Wenn-Funktion wird durch die programmierte Funktion leider immer wieder überschrieben.

Das Makro habe ich in eine Excel mit neurer Version hineinkopiert. Das Makro läuft auch dort nur leider ist dann immer wieder ein Bezug zu der 2003er-Excel da, den ich nicht herausbekomme. Aber wir können auch die 2003er Version nutzen.
Die Excel-Datei die Dank eurer Hilfe entstanden ist, kann ich zwar nicht in unser System importieren (akzeptiert keine EXCEL mit Makro), aber ich kann die Daten dann einfach in eine Excel ohne Makro kopieren.

Kurzum: Einige kleine Workarounds gibt es noch, aber so wie es jetzt ist, ist es schon mehr, als ich erwartet hatte 17 Blush
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste