Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Transponieren ect. großer Datenmengen
#1
Hallo Liebe Excel Profis,

Ich möchte eine größere Datenmenge verarbeiten, im Anhang befindet sich eine Beispieldatei.

Hierbei sollte Spalte B transponniert werden sodass die Komma getrennten zahlen untereinander in der Spalte B stehen. Wichtig hierbei ist das die Spalte A ( ALcar Nr. ) genau daneben in gleicher anzahl der Zeilen steht wie zuvor die Spalte B transponniert wurde.

Sofern das erfolgreich verlaufen ist sollten die Zahlen in Spalte A wie z.B. 5210 noch ersetzt werden durch eine "Produkt ID"

Die Alcarnummern und Produkt ID könnte ich in einer seperaten Tabelle ( Daten2 ) wie in der Beispieldatei gezeigt zur Verfügung stellen. in der Tabelle 3 sollte dann alles fertig errechnete erscheinen.


Hat jemand eine Idee von euch? Wurde das Clever-Forum lediglich umbenannt? die URL ist nicht mehr zu erreichen?! Mir wurde dort bereits schonmal innerhalb von Kürze sehr professionell weiter geholen beim Thema transponieren.


Ich freue mich auf euer Feedback :-)

Liebe Grüße aus Hannover


Angehängte Dateien
.xlsx   Stahlfelgen K Typ.xlsx (Größe: 9,89 KB / Downloads: 16)
to top
#2
Hi,

- wie kommen denn die Daten in dein Arbeitsblatt? Kannst du sie nicht von deiner Quelle aus mit "Text in Spalten" einfügen?
- Woher beziehst du deine Produkt-ID? Gibt es hier schon eine Möglichkeit, die beiden Nummern in der Quelle zu tauschen?

Zu deiner Frage bzgl. des Clever-Forums: Das CF wurde ohne Vorwarnung eingestellt. Der "harte Kern" der CF-User hat dann dieses Forum aus der Taufe gehoben.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top
#3
Hi Günter,

zur Erläuterung: die 1. Tabelle ist eine große fertige Datei bestehend aus einer Herstellernummer ( für eine Stahlfelge ) und in Spalte B sogennante K-Typnummer ( anhand dieser Nummern werden über Ebay Fahrzeuge zugeordnet zu denen die Stahlfelge aus Spalte A passt )


Die Tabelle 2 Exportiere ich mir aus unserer Auktionsabwicklung für Onlineshops Afterbuy damit ich eine eindetige Zuordnung einer Alcar Nummer zu der Spezifischen Produkt ID habe, die Produkt ID wird von Afterbuy vergeben.

Ich muss die Daten aus 2 verschiedenen Quellen also zusammen fügen DENN:

Afterbuy erkennt für den Import der K-Typnummern nur den Indikator PRODUKT ID.

Weitere herausforderung hierbei, beim Import wird jeweils nur Spalte A in der die Produkt ID steht und Spalte B mit lediglich EINER K-Typnummer zugelassen. Sollte also in Spalte C beispielweise eine weitere K-Typnummer stehen wird diese schlicht weg nicht berücktsichtigt.

Danke für dein Verständnis es nachvollziehen zu wollen. Bei weiteren Fragen bin ich natürlich behilflich, ich denke über ein Marko sollte sich dies umsetzen lassen?! Habe nur absolut keine Kenntnisse wie ma sowas macht.
to top
#4
Hi,

ich habe leider keine Möglichkeit gefunden, das Problem mittels Formeln zu lösen. Hier hilft nach meiner Einschätzung tatsächlich nur VBA.

Dabei kann ich dir aber nicht helfen. Tut mir Leid.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top
#5
Hallöchen,

und für mich geht das ein bischen zu sehr durcheinander, um helfen zu können.

Ich würde ... wenn überhaupt eine VBA-Lösung in Frage kommt ... ein geordneteres wenn; ...dann; ...sonst benötigen.

In der momentan vorhandenen Erklärung wird mir zu wild hin und zurückgesprungen.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

?mage
to top
#6
Hallo,

dieser Code:

Code:
Option Explicit

Sub zusammenführen_und_Transponieren()

   Dim daten1
   Dim daten2, daten3
   Dim idNummer As Long
   Dim i As Long, j As Long, k As Long
   Dim lngAnzahl As Long
   Dim arrSplit
   Dim arr()

   With Worksheets("Daten1")
      lngAnzahl = .Range("A1").CurrentRegion.Rows.Count - 1
      daten1 = .Range("A1").CurrentRegion.Offset(1, 0).Resize(.Range("A1").CurrentRegion.Rows.Count - 1, 2)
   End With

   With Worksheets("Daten2")
      daten2 = .Range("A1").CurrentRegion.Offset(1, 0).Resize(.Range("A1").CurrentRegion.Rows.Count - 1, 1)
      daten3 = .Range("A1").CurrentRegion.Offset(1, 1).Resize(.Range("A1").CurrentRegion.Rows.Count - 1, 1)
   End With

   For i = 1 To lngAnzahl
      arrSplit = Split(RTrim(Replace(daten1(i, 2), ",", "")))
      
      idNummer = daten3(Application.WorksheetFunction.Match(CDbl(daten1(i, 1)), daten2, 0), 1)
      ReDim Preserve arr(1, UBound(arrSplit) + k)
      For j = 0 To UBound(arrSplit)
         arr(0, k) = idNummer
         arr(1, k) = arrSplit(j)
         k = k + 1
      Next j
   Next i

   With Worksheets("So sollte es sein")
      .Cells.Clear
      .Range("A1:B1").Resize(k) = Application.Transpose(arr)
   End With
  
End Sub

ergibt mit den eingestellten Beispielen in den Tabellen Daten1 und Daten2 dieses Ergebnis in Tabelle:

"So sollte es sein"

Arbeitsblatt mit dem Namen 'So sollte es sein'
 AB
1450927894725
2450927895662
3450927895328
4450927895329
5450927895330
6450927895332
7450927895333
84280721210254
94280721211896
104280721230972
114280721230973
124280721211896
134280721231606
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß Atilla

Excel 2007
to top
#7
Hi Fragesteller,

wenn ich dich richtig verstanden habe, dann versuche es mit folgendem Code:

Code:
Sub MacheNeu()
   Dim lngZeile As Long
   Dim lngZiel As Long
   Dim lngLetzte As Long
   Dim wksZiel As Worksheet
   Dim arrDaten
   Set wksZiel = Worksheets("So sollte es sein")
   lngZiel = 1
   With Worksheets("Daten1")
      lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
      For lngZeile = 2 To lngLetzte
         If Application.Substitute(Right(.Cells(lngZeile, 2), 1), " ", "") = "," Then
            arrDaten = Split(Application.Substitute(Left(.Cells(lngZeile, 2), Len(.Cells(lngZeile, 2)) - 1), " ", ""), ",")
         Else
            arrDaten = Split(Application.Substitute(.Cells(lngZeile, 2), " ", ""), ",")
         End If
         wksZiel.Cells(lngZiel, 2).Resize(UBound(arrDaten) + 1, 1) = Application.Transpose(arrDaten)
         wksZiel.Range(wksZiel.Cells(lngZiel, 1), wksZiel.Cells(lngZiel + UBound(arrDaten), 1)) = .Cells(lngZeile, 1)
         lngZiel = lngZiel + UBound(arrDaten) + 1
         ReDim arrDaten(0)
      Next lngZeile
   End With
   With Worksheets("Daten2")
      lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
      For lngZeile = 2 To lngLetzte
         wksZiel.Columns(1).Replace What:=.Cells(lngZeile, 1), Replacement:=.Cells(lngZeile, 2), LookAt:=xlWhole
      Next lngZeile
   End With
   Set wksZiel = Nothing
End Sub


GrußformelBeverly's Excel - Inn
Ein Fragesteller sollte Antworten gründlich und komplett lesen und nicht nur die für ihn angenehmen Teile.
to top
#8
Hallo,

1. das Clever-forum ist abgeschaltet, hier ist das Nachfolgeforum.
2. ist Deine Tabelle sehr ungeschickt aufgebaut:
-die Zahlen in Spalte A sind Texte
-es gibt mehrere Zeilen zu einer Nummer. Sind die wenigstens sortiert???
-mal ist ein Komma am Ende der der Zeile, mal nicht.
Ich habe das heute Mittag angefangen, aber keine Zeit es fertig zu stellen. Hier das Formelergebnis:


Angehängte Dateien
.xlsx   Stahlfelgen K Typ.xlsx (Größe: 11,59 KB / Downloads: 4)
Gruß


Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
to top
#9
Hey Beverly,

du hast mir schon einmal prima im "Forum" geholfen. Ich habe dein VBA jetzt mal ausprobieren können, soweit funktioniert wohl alles,

es kommt aber eine Fehlermeldung:

wenn ich auf DEBUGGEN klicke zeigt er mir den Code an und das folgende ist gelb hinterlegt:

idNummer = daten3(Application.WorksheetFunction.Match(CDbl(daten1(i, 1)), daten2, 0), 1)


So wie es aussieht bricht der Vorgang bei ca. 1/3 der zuverarbeitenden Daten ab ????


Laufzeitfehler "13" steht dort als Fehler Typen unverträglich.




Anbei habe ich meine finale Datei beigefügt in der jetzt alle Daten enthalten sind, nach durchführung des Makro kommt der oben beschriebene Fehler.


Angehängte Dateien
.xlsm   Fertig für Markos.xlsm (Größe: 164,31 KB / Downloads: 3)
to top
#10
PS: bei Atila seiner Variante des Makro Code bricht das Makro ebenfalls ab.....
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Liste mit Daten die größer sind als ein Wert Robbie1985 3 236 15.08.2016, 20:03
Letzter Beitrag: shift-del
  transponieren, löschen per vba Dude85 5 345 02.08.2016, 13:33
Letzter Beitrag: Dude85
  Vom Senkrechte ins Waagerechte (kein Transponieren) FerdinandSchuster 18 593 01.08.2016, 12:29
Letzter Beitrag: radagast
  VB Makro hängt sich auf bei großen Datenmengen Bjoux 4 159 24.06.2016, 15:16
Letzter Beitrag: Bjoux
  Zellen Transponieren Nukleus 6 373 15.06.2016, 18:51
Letzter Beitrag: Jockel
  "Wenn größer als 1, dann..." ohne Buchstaben zimme129 2 330 02.05.2016, 09:45
Letzter Beitrag: zimme129
  Tabelle; Spalten/Zeilen ändern - aber nicht transponieren b-trilogie 5 570 29.03.2016, 12:06
Letzter Beitrag: snb
  verschachtelte wenn Formel mit größer gleich NRG 5 600 21.02.2016, 06:57
Letzter Beitrag: BoskoBiati
  Transponieren und Teilen? anana 4 404 10.12.2015, 15:43
Letzter Beitrag: anana
  VBA "größer als" nicht genau Joe 8 540 05.10.2015, 13:21
Letzter Beitrag: RPP63

Gehe zu:


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