Registriert seit: 14.04.2014
Version(en): 2003, 2007
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
Registriert seit: 27.04.2014
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
Registriert seit: 14.04.2014
Version(en): 2003, 2007
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:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• superkot1
Registriert seit: 12.04.2014
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:1 Nutzer sagt Danke an Beverly für diesen Beitrag 28
• superkot1
Registriert seit: 27.04.2014
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
Habt beide ein Thank you bekommen