Transponieren ect. großer Datenmengen
#11
Hallo,

das passiert deswegen, weil Zahlen der Spalte A in TabelLe Daten1 in Tabelle Daten2 nicht vorhanden sind.
Dies Möglichkeit ist weder von mir noch von Karin bedacht worden, da Du uns das nicht gesagt hast.
Was soll dann passieren, wenn sie nicht vorhanden sind?
Gruß Atilla
Top
#12
Hey,

danke für den Hinweis, ja da bin ich leider Leihe, wenn ich immer genau wüsste welche Folgeprobleme es geben könnte bzw. welche Kriterien alle wichtig sind für VBA dann wäre es ein vielfaches leichter das weiss ich wohl.

Mein Idee ist die das dieser Datensatz ( diese Zeile ) dann einfach ausgelassen wird.

Leider ist Tabelle 1 nicht immer Tagesaktuell Synchron zu den Daten in Tabelle 2 deswegen kann es vorkommen das Daten in Tabelle 2 sind aber nicht in Tabelle 1.


Es geht ja hier zunächst um einen großen Datensatz, sollen im nachhinein Daten dazu kommen vereinzelt kann ich diese auch manuell nachpflegen aber in Anbetracht des Volumens der Datei ist alles händisch undenktbar.

Danke schonmal
Top
#13
Hallo,

Zitat:Mein Idee ist die das dieser Datensatz ( diese Zeile ) dann einfach ausgelassen wird.

dann so:

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 varZ
   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), ",", "")))
      varZ = Application.Match(CDbl(daten1(i, 1)), daten2, 0)
      If Not IsError(varZ) Then
         idNummer = daten3(varZ + 1, 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
      End If
   Next i

   With Worksheets("So sollte es sein")
      .Cells.Clear
      .Range("A1:B1").Resize(k) = Application.Transpose(arr)
   End With
  
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • superkot1
Top
#14
Hi,

(15.05.2014, 21:52)superkot1 schrieb: Hey Beverly,

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


solch eine Zeile gibt es in meinem Code nicht.


In meinem Code kommt allerdings ebenfalls ein Fehler, und zwar in dieser Zeile

Code:
arrDaten = Split(Application.Substitute(.Cells(lngZeile, 2), " ", ""), ",")

Ursache ist mir unklar. Wenn du jedoch in dieser Zeile .Value ergänzt, kommt kein Fehler mehr:

Code:
arrDaten = Split(Application.Substitute(.Cells(lngZeile, 2).Value, " ", ""), ",")


Dateiupload bitte im Forum! So geht es: Klick mich!
" height=35" align="left" alt="Grußformel">Dateiupload bitte im Forum! So geht es: Klick mich!
" height=35" align="middle" alt="Beverly's Excel - Inn">[/code][/quote]
[-] Folgende(r) 1 Nutzer sagt Danke an Beverly für diesen Beitrag:
  • superkot1
Top
#15
Hat alles funktioniert so wie ich mir das gewünscht habe, insgesamt sind es ca. 49.000 Zeilen ein paar Stichproben habe ich gemacht ich denke alles ist Top.

Vielen lieben Dank nochmal an euch beiden Profis Beverly und Attila Ihr seid Spitze Wink


Habt beide ein Thank you bekommen Wink
Top


Gehe zu:


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