Excel Spalten Ermitteln und kopieren

theluda88

Cadet 4th Year
Registriert
Juli 2006
Beiträge
67
Hallo,

Ich grübel jetzt schon seit einiger Zeit über ein Problem nach um ein Excel Tool von uns kompatibel zu machen mit Verschieden Import Reihenfolgen. Mittlerweile habe ich auch eine Lösung gefunden.

Ich würde gerne anhand eines Suchbegriff in de ersten Zeile z.b. "ObjectType" die Spalte ermitteln und diese Spalte dann komplett auf ein anderes Tabellenblatt z.b. in Spalte X kopieren.

Bin hier gerade im VBA ein wenig am Tüfteln. Komme hier aber nicht so richtig weiter. Eine Spalte hat auch ca 11000 Einträge.

Danke für eure Tipps und ideen!

Gruß
Daniel
 
Makro Recorder an > Mit Autofilter nach ObjectType filtern > Bereich kopieren > in ein neues Tabellenblatt kopieren > Makro Recorder aus
Dann im VBA die Funktion anpassen (Parameterübergabe für den Suchbegriff oder Zellbezug mit Suchbegriff oder oder oder).
Ansonsten schreit das aber wenn es nix automatisiertes ist irgendwie auch nach Pivot-Tabelle X)
 
Okay,
Ich Versuche das ganze mal etwas genauer zu erklären. Wir haben ein System zu Langzeitarchivierung von Prozessdaten.
Dieses System kann ich per Excel Im- und Exports konfigurieren.
Hier mal ein Beispiel eines Imports. Diese Daten werden dann bearbeitet und wieder an den Server Exportiert.
PI Import Bsp.jpg
Leider hat sich die Reihenfolge der Spalten mit der neuen Version geändert.
Die Vorgegebende Reihenfolge der alten Version wird gebraucht, da ich die Daten mittels eines VBA Scripts aus einen Leitsystem Backup Automatisch erstelle.
Die Vorgegebene Reihenfolge Lautet:
Selected(x), Name, compdev, compdevpercent usw.

Wir arbieten hier mit einem PI-System

Grüße Daniel
 
Danke für den Tip, die Idee hatte ich auch schon. Leider brauch ich in dem anderen Tabellenblatt die richtigen Daten damit mein Tool sie bearbeiten kann und wieder Exportiert werden können.
Beim Exportieren ist die Reihenfolge übrigends egal.

Mitttels:
Code:
    Sheets("Tabelle1").Select
    Columns("L:L").Select
    Selection.copy
    Sheets("Tabelle2").Select
    Columns("C:C").Select
    ActiveSheet.Paste
Kann ich schonmal die komplette Spallte auf eine anderes Blatt kopieren. Leider fehlt mir der Ansatz wie ich die zu kopierende Spalte automatisch ermmitteln kann. Z.b. mit der Suche nach "compdev" in der ersten Zeile.
Mit dem Autofilter schaff ich das irgendwie nicht

Gruß Daniel
 
Das hört sich nach einer (für VBA) ganz simplen Aufgabe an. Aber warum sollten wir viel Aufwand in Sachen Hilfe für beratungsresistente Frager machen? (Ich meine die immer noch fehlende Beispieltabelle)
 
Hallo Günther,

Hier nicht Beratungsresistent erscheinen. Oben habe ich Bereits einen Beispiel Screenshot von so einem Import angehängt.
Hier nochmals:
PI Import Bsp.jpg

Leider kann ich nicht das Komplette Excel Programm anhängen

Danke
Gruß
Daniel
 
Moin Daniel,

den Screenshot habe ich gesehen. Aber Bilder können in einer Galerie die Herzen der Betrachter erfreuen, hier heißt das aber doch: "Entweder du kommst mit der Abbildung klar oder du baust sie selbst in Excel nach". Ich habe die dritte Möglichkeit gewählt und deinen Beitrag ad acta gelegt.

Das Wort "beispieldatei" sollte trotz falscher Groß- Kleinschreibung eindeutig gewesen sein. Genau den von dir gelieferten Ausschnitt als *.xls*-Datei, mehr brauchen wir Helfer nicht. Darauf können wir sinnvoll aufbauen und notfalls noch einmal nachfragen. Erforderlichenfalls wirst du auch eine Datei anonymisieren müssen, wenn du effektive Hilfe haben willst ...
 
Mahlzeit Günther,

Jetzt wo ich nochmal darüber nachdenke muss ich dir wohl recht geben. Habe mich wohl vorhin ein wenig verrannt. Bzw war ich ein wenig dämlich...
Die Daten, die euch per Screenshot geszeigt habe, kann ich natürlich auch in einer Excel Datei veröffentlichen.

Hier mal die Beispieldatei:
Anhang anzeigen Import_Bsp.xlsx

Gruß
Daniel
 
OK Daniel,

ich habe das so verstanden, dass du einfach nur die Spalten in eine andere Reihenfolge bringen willst. Die angefügte Datei macht das.

Die Hilfstabelle "Neuordnung" gestaltet das Ganze variabel, wenn das immer gleich ist, würde ich ein Array mit Quell- und Zielspalte fest coden (numerische Werte) und dann statt des Bereichs in dem Arbeitsblatt das Array in einer Schleife zeilenweise abarbeiten.

Ich bin jetzt für ca. 2-3 Std. nicht im Büro!
 

Anhänge

So, bin dann auch mal ein wenig weiter gekommen.
Hab jetzt ein Scipt das mir nach dem "compdev" in der ersten Zeile Sucht und dann die ganze Spalte auf Tabellenblatt 2 in Spalte C kopiert.

Code:
 Const piImport_blatt As Integer = 1 'Tabellenblatt für DatenImport mittels Pi Builder
 Const piHoneywell_blatt As Integer = 2 'Tabellenblatt für Honeywell Vergleich

Sub SuchenKopieren()
 Dim iSpalte  As Integer
' compdev suchen und in Tabelle 2 kopieren
' Skript sucht in Tabelle 1 nach dem Begriff "compdev" und kopiert ihn in Tabelle 2 in Spalte C
' Spalte in Tabelle 1 ist Variabel und Tabelle 2 ist die Position fest vorgegben
    With ThisWorkbook.Worksheets(piImport_blatt)
       For iSpalte = 1 To 256
          If .Cells(1, iSpalte).Value = "compdev" Then
             .Range(Cells(1, iSpalte), .Cells(30000, iSpalte)).Copy Destination:= _
                ThisWorkbook.Worksheets(piHoneywell_blatt).Range("C:C")
             Exit For
          End If
       Next iSpalte
    End With

 End Sub
Anhang anzeigen Pi Sortieren.zip
Soweit ganz gut. Jetzt ist der gedanke das ganze nurnoch ein wenig zu Automatisieren uns es für alle benötigten (30 Stück) Spalten zu erweitern.

@Günther
Danke für deine Hilfe nach diesen kleinen Anlaufschwierigkeiten.
Deine Beispiel irritiert mich ein wenig. Es heist zum einen MaxBeispiel und ich konnte keine Sortierfunktion erkennen.

Gruß
Daniel
 
Moin Daniel

wenn man in Eile ist dann passiert solch ein Mist: Ich habe die falsche Tabelle gepackt/erwischt :(
Hier die richtige ... (geprüft)

Und der Code aus der falschen Datei kommt nicht von mir. Ich arbeite wesentlich professioneller (Namen für die Schaltfläche, Deklaration von Variablen, Einrückung).
 

Anhänge

Zuletzt bearbeitet:
Abend,
Kein Stress und danke für dein Beispiel. Ich denke wohl scheinbar zu kompliziert. Dein Beispiel ist einfach wie genial.
Die Reihenfolge der Ausgabe muss immer gleich sein. Von daher könnte man es direkt im VBA codieren. Bzw mit einer Hilfstabelle im VBA. Optimal wäre nach wie vor die Automatische suche der Spalte die kopiert werden sollte. vll auch mit einer Hilfstabelle.
Beispieltabelle:
Suchwort - Ausgabespalte(im neuen Blatt)
Selected(x) - A
Name - B
compdev - C
compdevpercent - D

Ich glaube da muss ich morgen noch ein wenig weiter tüfteln.

Gruß
Daniel
 
Moin,

auch das ist an sich kein Thema. Alles nur eine Frage der Anforderungs-Beschreibung ;).
Ich behaupte jetzt einfach einmal:
  1. In der Quelltabelle einen (im Code) definierten String in Zeile 1 suchen
  2. Spalte merken und komplett in erste freie (oder bezeichnete) Spalte der Zieltabelle kopieren
  3. Punkt 1 und 2 so lange wiederholen, bis kein Begriff mehr übrig ist.
Stimmt das? Wenn ja, dann bleibt die Frage, was bei "nicht gefunden weil ..." passieren soll.
 
Wenn es nur darum geht Spalten zu tauschen verstehe ich das Problem nicht, wenn alles automatisiert ist, sollten die Spalten immer gleich geliefert werden. Somit Spalte ausschneiden und an der richtigen Stelle einfügen. Oder dynamisch mit Sverweis, Suche, Zelle/Spalte, Indirekt und Bereich verschieben was aber nicht unbedingt performant ist.
 
Guten Abend,

@Günther
  1. In der Quelltabelle einen (im Code) definierten String in Zeile 1 suchen
    Stimmt genau
  2. Spalte merken und komplett in erste freie (oder bezeichnete) Spalte der Zieltabelle kopieren
    Am besten in einer festgelgten Spalte. Ist wohl sicherer. Ansonsten könnte ja auch die Reihenfolge der Strings den Aufbau der neuen Tabelle vorgeben
  3. Punkt 1 und 2 so lange wiederholen, bis kein Begriff mehr übrig ist.
    So wäre es perfekt

Hab das ganze mal kurz kommentiert, Denke das ist so einfacher. Bei "nicht gefunden" Sollte das Skript am besten Abbrechen und eine Fehlermeldung via MsgBox ausgeben. Das ganze ist auf einen kleinen Kollegen kreis begrezt.

@alxtraxxx
Das Importieren der Konfi Datei wird mit einem Tool der Herstellers durchgeführt. Hier kann der Anwender mit einschränken innerhalb von Unterkategorien die Reihenfolge verändern, desweiteren auch noch andere unötige Parameter Importieren.

Deswegen die Idee mit dem Skript und der Automatischen Suche

Auf jedenfall schoneinmal Danke für eure Hilfe!!!

Einen Schönen Abend
Daniel
 
Zurück
Oben