HERBERS Excel-Forum - das Archiv

Thema: Export bestimmter Spalten in eine neue Exceldatei

Export bestimmter Spalten in eine neue Exceldatei
Max
Hallo zusammen, ich habe gestern eine ähnlich Anfrage gestellt. Die Lösung ist leider noch nicht zufriedenstellend. Ich habe eine schnelle Exceldatei gemacht um mein Problem zu erklären. Diese habe ich hier hochgeladen:

https://www.herber.de/bbs/user/168982.xlsx

Ich benötige aus dem Reiter Export einen neue Exceldatei mit einer begrenzen Anzahl an Spalten die vorgegeben ist. Die Export Datei ist auf SAP zugeschnitten und liefert nur Daten die nötig sind um den Auftrag dort hochzuladen.

Ich habe einen Reiter Bsp. gemacht. So soll die Export Datei aussehen.

Könnte mir hier bitte jemand mit dem passenden Makro unter die Arme greifen? Onur hat mir bereits geholfen, allerdings benötige ich nur die Artikel in der neuen Datei die auch wirklich bestellt werden, also eine Bestellmenge in Spalte G haben.
AW: Export bestimmter Spalten in eine neue Exceldatei
Onur
Und wieso hast du das nicht bereits gesern erwähnt?
Wieviele Änderungen kommen denn noch dazu, wenn ich wieder alles ändere??
AW: Export bestimmter Spalten in eine neue Exceldatei
Piet
Hasllo Max

ich denke ich habe es hinbekommen, bitte noch mal sorgfältig prüfen on alles korrekt kopiert wurde.

Der Button hat jetzt eine Umschaltfunktion, denn beide Makros sind vorhanden, aber nur ein Makro wird gestartet.
Ich nehme an das der Text RDD nur bei Sammelbestellungen in der Zelle P1 auftaucht, nicht bei Einzelbestellungen.
Der Button prüft ob dieser Text vorliegt, und startet dann das dazugehörige Makro. Das neue Makro ist in Modul3.
Im Datei speichern Makro habe ich zur Sicherheit noch eine Fehlermeldung eingebaut.
https://www.herber.de/bbs/user/169037.xls

mfg Piet
AW: Export bestimmter Spalten in eine neue Exceldatei
Piet
Hallo Max

ich habe dir das Makro angepasst. Bei mir läuft es einwandfrei. Aber bitte noch mal testen.
Das Makro prüft in Zeile1 die erste Spalte Sold To, und die letzte Spalte Sold To. Egal ob Text oder Zahl drin steht.
Es muss aber was drin stehen, sonst finde ich diese Spalte nicht! Das gilt auch für "RDD" und "Purchase Order".
Du bist bei den Spalten nicht auf CC begrenzt, theoretisch kannst du sie beliebig weiter nach rechts erweitern.
https://www.herber.de/bbs/user/169066.xls

Zum testen habe ich Buchstaben statt Zahlen bei der Menge angegeben, nur um die Spalten zu prüfen.
Du wirst bei deinen Exporten ja sehen ob das Ergebnis stimmt. Würde mich freuen. In diesem Sinne ...

mfg Piet
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Hi Piet, ich bin wirklich begeistert. In Deiner Datei läuft es so wie es soll. Aber wenn ich Dein Makro in meine Datei kopiere geht es nicht. Spalten sind gleich.
Habe sogar gestern extra meine Datei fein säuberlich in Deiner Datei neu aufgesetzt, aber dann ging es auch nicht mehr. Irgendwas schmeckt dem Makro nicht.

Ich habe jetzt mal die Originaldatei genommen mit der ich eigtl arbeite und alle Spalte GELB gemacht die relevant sind, den rest gelöscht. Kannst Du erkenn warum er die Sammelspalten nicht in den Reiter Export zieht?

https://www.herber.de/bbs/user/169081.xls
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Hi Piet, Weltklasse. DANKE. Du bist ein Genie..!

Aber 1 Kunde wird zu wenig ausgespuckt. Ich habe es mal durchnummeriert. 1-30

In der Export Datei kommen aber immer nur 29 an..

Wenn ich z.B. Spalten alle ausblende und nur 1 sichtbar habe übernimmt er die Werte nicht.. Erst wenn ich min 2 Spalten einblende gehts los.

Kannst Du es so einstellen das die Werte immer übernommen werden? Also auch wenn Spalten ausgeblendet sind?

Im Bespiel habe ich jetzt 29 Spalten bis CC ausgeblendet

https://www.herber.de/bbs/user/169105.xls
AW: Auch ein "Genie" kennt bei Excel nicht alle Funktionen!!
Piet
Hallo Max

Excel hat immer wieder nette Überraschungen bereit, auf die man nicht vorbereitet ist!!
Auch ein "Genie" kennt bei Excel nicht alle Funktionen!!

Tatsache ist, das der Suchlauf nach LastSpalte bei - ausgeblendeten Spalten - NICHT funktioniert!
Das ist mir völlig neu, damit hatte ich nicht gerechnet. Und noch einen Schönheitsfehler in beiden Makros entdeckt.
So sollte es jetzt aber laufen, teste es aber bitte trotzdem noch einmal mit allen Möglichkeiten die dir einfallen.
https://www.herber.de/bbs/user/169123.xls

mfg Piet
AW: Auch ein "Genie" kennt bei Excel nicht alle Funktionen!!
Max
Folgende Fehlermeldung kommt:

Laufzeit 91
Objektvariable oder With Blockvariable nicht festgelegt

Debug Zeile:
rsn = .Cells.Find(what:="Order Reason", LookAt:=xlWhole).Column

Was könnte das sein?
AW: Auch ein "Genie" kennt bei Excel nicht alle Funktionen!!
Piet
Hallo Max

da bin ich jetzt sprachlos, bei mir klappt es einwandfrei.
Bitte prüfe mal ob in Zelle CF3 auch wirklich der Text "Order Reason" steht??
Wenn ich den lösche bekomme ich auch einen Laufzeitfehler.

mfg Piet
AW: Auch ein "Genie" kennt bei Excel nicht alle Funktionen!!
Piet
Nachtrag

falls das gelegentlich vorkommn kann müssten wir da noch eine Fehlermeldung einbauen. Ich warte mal ab.

mfg Piet

AW: Auch ein "Genie" kennt bei Excel nicht alle Funktionen!!
Max
Hi Piet, es steht in Zeile CF3. Aber ich habe jetzt mal "Order Reason" aus dem VBA rauskopiert und bei Zelle CF3 als Text eingefügt. Jetzt geht es. Verrückt

VIELEN VIELEN DANK FÜR DEINE WERTVOLLE HILFE!!!
LG Max
AW: Export bestimmter Spalten in eine neue Exceldatei
Piet
Hallo Max

kleine Schönheitsfehler, wenn man die Originaldatei nicht hat. War aber schnell gefunden.
Ändere bitte den Code wie unten, dann klappt es auch in der Originaldatei - Zwei Fehler:
Ich habe nicht damit gerechnet das in der 1. Zeile mal nur ein Sold To Wert xtehen kann!
Dann stimmt meine rsn Berechnung nicht mehr, das habe ich auf Find Methode umgestellt!
2. Fehler _ bei Do Until SoldSpa > LastSpa war das "=" zuviel du hast ja nur eine Spalte!
Wenn man über 20 Jahre VBA programmiert findet man solche Fehler in einer Minute.

mfg Piet

With Worksheets("Expert")

'Datum + Kunde in Variable laden
Datum = .Cells.Find(what:="RDD", LookAt:=xlWhole).Cells(2, 1)
Kunde = .Cells.Find(what:="Purchase Order", LookAt:=xlPart).Cells(2, 1)
rsn = .Cells.Find(what:="Order Reason", LookAt:=xlWhole).Column

'1. Sold To Spalte und Letzte Sold Spalte ermitteln
SoldSpa = .Range("A1").End(xlToRight).Column
LastSpa = .Range("IV1").End(xlToLeft).Column
'LastZell in Tabelle1 ermitteln (Material Spalte)
LastZell = .Cells(Rows.Count, 4).End(xlUp).Row
z = 1 '1.Zeile in Zieltabelle

'Spalten bis "Sold To" kopieren
Do Until SoldSpa > LastSpa
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Hi Piet, klasse. Danke!!! Das ist genau das was ich brauche!!! :)

Ich habe nur versucht, bisher vergeblich, es in die Bestelldatei von mir einzubinden.

Diese Datei: https://www.herber.de/bbs/user/169051.xls

beinhaltet die Spalten die ich in der Export Datei brauche genau so wie in der Orignaldatei.

Alles was grün ist muss in die Export Datei.

Bsp "Material" in Spalte D in Originaldatei
Anzahl der Kunden ist 30 Stück (Spalte AZ:CC) usw

Kannst Du mir bitte die Werte anpassen? Ich hab es nicht geschafft :(
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Nichts kommt dazu. Ich hoffe Du bist so nett und kannst mir trotzdem helfen. LG
AW: Export bestimmter Spalten in eine neue Exceldatei
Piet
Hallo

ich weiss nicht welchen Code onur schreibt, will aber meinen nicht in die Tonne kloppen.
Ich gehe davon aus das die Spalten B bis E immer gleiche Werte behalten sollen. Nur A wird nicht kopiert.
Sonst musst du diese Zeile ändern: -- Ziel.Range("B2:E2").Copy Ziel.Range("A2:E" & LastZell)

mfg Piet

Sub Spalten_verschieben()

Dim Ziel As Worksheet, j, LastZell As Long
Set Ziel = Worksheets("Bsp")
LastZell = Ziel.Cells(Rows.Count, 6).End(xlUp).Row
Ziel.Range("F2:P" & LastZell).Clear

With Worksheets("Expert")
'LastZell in Tabelle1 ermitteln
LastZell = .Cells(Rows.Count, 1).End(xlUp).Row
'Spalte B bis E immer ausfüllen (Werte aus Zeile2)
Ziel.Range("B2:E2").Copy Ziel.Range("B2:E" & LastZell)

'Spalten nacheinander kopieren!!
.Range("A2:A" & LastZell).Copy Ziel.Range("K2") 'Material
.Range("F2:F" & LastZell).Copy Ziel.Range("L2") 'Bestellmenge
.Range("H2:L" & LastZell).Copy Ziel.Range("F2") 'Sold (fünfer Block)

'Leezeilen bei Bestellmenge löschen
For j = LastZell To 2 Step -1
If Ziel.Cells(j, 12) = Empty Then
Ziel.Rows(j).Delete shift:=xlUp
End If
Next j
End With
End Sub
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Hi Piet, danke Dir. Exportiert werden sollen nur die Spalten B, G, I, J, K, L, M

Es muss eine NEUE Datei erstellt werden > Speicherort lokal auf C:

Die Spalten sollen wie folgt in die exportierte Datei:

B in Spalte K
G > L
I > F
J > G
K > H
L > I
M >J

Und NUR die Spalten die in den jeweiligen Zellen des "Materials" eine Bestellmenge haben. Also keine 0 und Leere.
AW: Export bestimmter Spalten in eine neue Exceldatei
Piet
Hallo

bei deinen letzten Spaltenangaben kann etwas nicht stimmen. Ausserdem ist das Makro so simpel geschrieben, das du die Spaltenangaben im Makro selbst von Hand ändern kannst. Du musst ja nur die richtigen Spaltenbuchstaben in Quelle und Zieltabelle angeben. Das ist alles.

Nach dem kopieren werden alle Zeilen wo in Spalte F keine Wert drin stehen gelöscht. Das sollte zuerst mal klappen.
Die Datei dann unter neuem Namen speichern ist auch kein Problem. Das kann man nachher noch einbauen.
Wasd ist denn mit den Spalten von A bis E?? Werte löschen, oder wie in deinem Beispiel kopieren??

Beispiel1: -https://www.herber.de/bbs/user/168997.xls
Beispiel2: - https://www.herber.de/bbs/user/168998.xls

mfg Piet
AW: Export bestimmter Spalten in eine neue Exceldatei
Onur
Dass er das ganze auch noch als Mail verschickt haben will, hat er bestimmt auch nicht erwähnt, oder ? :)
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Also das mit der Mail wäre nice. Aber kein Muss.

Wichtig wäre das sich der Reiter Bsp. in dem Fall dann direkt auch als neue Datei auf C: speichert.

Ich habe das Makro nun so abgeändert das alle Spalte die ich brauche in die richtigen Spalten übertragen werden.

Aber noch eine Bitte. Im Reiter Bsp, Spalte 1 (SNO) soll die Nummer fortlaufen sofern es eine Bestellung gibt. In meinem Fall also 1-5

Aber er macht nur 1-2 > Was wäre die Lösung?

Die gelben Felder sollen so heissen wie sie jetzt sind aber auch nur dann dort erscheinen wenn rechts eine Bestellung von einem Material ist.

Spalte M-P kann leere bleiben..

Achso und es muss kein Rahmen übertragen werden. Aktuell wird alles was grün ist mit Rahmen übertragen.

Hier die Datei: https://www.herber.de/bbs/user/168999.xls
AW: Export bestimmter Spalten in eine neue Exceldatei
Piet
Hallo

ich habe die Datei überarbeitet, jetzt werden nur noch Werte kopiert. Und das Sheet "Bsp" als neue Datei gespeichert.
Zur Vereinfachung habe ich den Pfad der Exportdatei genommen. Den Pfad musst du ggf. bitte von Hand ändern.
Mit Mail Versand kenne ich mich nicht aus, da müssten die Kollegen den Code im Button_Start noch ergänzen.
https://www.herber.de/bbs/user/169002.xls

mfg Piet
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Mega! Funktioniert richtig gut Piet. VIELEN VIELEN DANK :)
AW: Export bestimmter Spalten in eine neue Exceldatei
Max
Piet, ich habe noch eine Frage. Ich hoffe es ist machbar. Das was Du gemacht hast ist für einen einzelnen Auftrag. Es gibt aber auch Gruppen die Sammelbestellungen machen über mehrere Kunden. Die sind auf Spalten aufgeteilt.

Ich erkläre (Grundprinzip ist ähnlich)

In den Reiter Export müssen folgende Werte übertragen werden:

Material Spalte A
Die Kunden Spalte F:M > Aber NUR sofern ein Kunde eine Bestellung tätigt. Habe den Bereich GOLD markiert. Sofern hier eine Menge drin steht > dann export
Order Reason Spalte N
RDD Zelle P2
Purchase Order Number Zelle Q2

Im Reiter Export sollen die Überschrift in Zeile 1 unbedingt FIX stehen bleiben
SNO soll wieder fortlaufend sein, je nach Bestellmenge
Spalte B:E soll wieder genau so heissen wie es drin steht, je nach Bestellmenge
Gelber Bereich sind die Daten die exportiert werden
Blau bleibt leer

Kannst Du Dein Makro dafür leicht umschreiben oder ist das zu aufwändig?

Hier die Datei https://www.herber.de/bbs/user/169004.xls
AW: Export bestimmter Spalten in eine neue Exceldatei
Piet
Hallo Max

deine Frage muss ich mir in Ruhe anschauen, freut mich aber das es schon mal soweit gut klappt.

mfg Piet