Clever-Excel-Forum

Normale Version: Makro zum Daten Übertragen in Tabelle 2
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen,

benötige wieder kurze Hilfe in Excel.
Ich habe eine Tabelle welche mit Daten gefühlt wird, diese Daten müssen dann in andere andere Datei übermittelt werden.
Diese Schritt muss sein, den die genante Tabelle wird von verschiedenen Leuten gefüllt aber die Master wird nur von einen bearbeitet.

Die Master Tabelle ist aber anders aufgebaut und damit man nicht ständig Zelle für Zelle reinkopier würde ich gerne ein Makro haben, welche die Daten in die nötige reinfolge umwandelt.
Bsp Tabelle anbei.

Bitte beachtet dass die Daten aus B, C, D beim übertragen zusammen in eine Zelle Dargestellt seien sollen.

Vielen Dank
Hallo Zusammen,

kann wirklich keine Helfen!!!
Hallo,
geht auch Power Query?

Daten-> Aus Tabelle/Bereich
Im sich öffnenden Editor die Spalten verschieben und zusammenführen.
hallo Cadnus,

würde für meine zwecke eher unpassen sein. Am besten ist natürlich mit einem klick alles erledigt, deswegen hoffe ich immer noch auf VBA lösung
Es gibt ja noch den Makrorekorder.
ich brauche ja keinen gesamten code, ich bräuchte nur ein ausschnitt, den rest würde ich selber verfolständigen
Wo ich aber hilfe brauche, so ist es bei den zusammenfügen von drei Zellen in eine Zelle
Hallo,
Sub aaa()
Dim lngZ As Long
Dim varQ As Variant
Dim varZ As Variant
With Worksheets(" Tabelle")
varQ = .Range("B3").Resize(.Cells(.Rows.Count, 2).End(xlUp).Row - 2, 6).Value
End With
ReDim varZ(1 To UBound(varQ, 1), 1 To 4)
For lngZ = 1 To UBound(varQ, 1)
varZ(lngZ, 1) = varQ(lngZ, 6)
varZ(lngZ, 2) = varQ(lngZ, 5)
varZ(lngZ, 3) = varQ(lngZ, 2) & " " & varQ(lngZ, 3) & " " & varQ(lngZ, 4)
varZ(lngZ, 4) = varQ(lngZ, 1)
Next lngZ
Worksheets("Neue Tabelle").Range("B3").Resize(UBound(varZ, 1), UBound(varZ, 2)).Value = varZ
End Sub
Gruß Uwe
Hallo Kuwer,

könntest du bitte den Code erklären, ich verstehe nicht welche Funktion wohin was überträgt.

Danke
Hallo Kuwer,

ich habe meine Sachen soweit selber beantwortet, es funktioniert alles fast wie ich wollte.

Ich habe nun noch zwei kleine Fragen:
Wie kann ich werde in Code einbauen, welche nicht in der Quelle Range stehen, z.b habe ich eine Überschrift, diese steht in C1 der Quellen Tabelle, diese würde ich gerne z.b in die Ziel Tabelle AC (in meinen Fall ist es die (26) und in AI (32)) übertragen.

Weiter hin habe noch zwei werte die einfach erscheinen sollen wenn, durch das Makro, die Ziehltabelle beschrieben wird.
Z.b. wenn in AA (24) wert durch makro rein geschrieben wird soll in AB (25) "KG" erscheinen.

Hier mein abgeänderter Code:
Code:
Sub aaa()
  Dim lngZ As Long
  Dim varQ As Variant
  Dim varZ As Variant
  With Worksheets("Tabelle")
    varQ = .Range("B5").Resize(.Cells(.Rows.Count, 8).End(xlUp).Row - 2, 22).Value
  End With
ReDim varZ(1 To UBound(varQ, 1), 1 To 36)
  For lngZ = 1 To UBound(varQ, 1)
    varZ(lngZ, 1) = varQ(lngZ, 1)
    varZ(lngZ, 3) = varQ(lngZ, 2)
    varZ(lngZ, 5) = varQ(lngZ, 7) & " " & varQ(lngZ, 8) & " " & varQ(lngZ, 9)
    varZ(lngZ, 4) = varQ(lngZ, 6)
    varZ(lngZ, 11) = varQ(lngZ, 10)
    varZ(lngZ, 12) = varQ(lngZ, 11)
    varZ(lngZ, 10) = varQ(lngZ, 12)
    varZ(lngZ, 8) = varQ(lngZ, 14)
    varZ(lngZ, 9) = varQ(lngZ, 13)
    varZ(lngZ, 16) = varQ(lngZ, 15)
    varZ(lngZ, 17) = varQ(lngZ, 16)
    varZ(lngZ, 24) = varQ(lngZ, 17)
    varZ(lngZ, 27) = varQ(lngZ, 3)
    varZ(lngZ, 28) = varQ(lngZ, 4)
    varZ(lngZ, 18) = varQ(lngZ, 18)
    varZ(lngZ, 19) = varQ(lngZ, 19)
    varZ(lngZ, 22) = varQ(lngZ, 20)
    varZ(lngZ, 23) = varQ(lngZ, 21)
  Next lngZ
  Worksheets("Tabelle1").Range("D3").Resize(UBound(varZ, 1), UBound(varZ, 2)).Value = varZ
End Sub

Vielen Dank

un eine Frage noch, warum werden in Zieh Tabelle nur ersten zwei zeilen gelöscht wenn die Quell Tabelle leer ist und die restlichen zellen bleiben beschrieben?

un eine Frage noch, warum werden in Zieh Tabelle nur ersten zwei zeilen gelöscht wenn die Quell Tabelle leer ist und die restlichen zellen bleiben beschrieben?
Hallo,
Sub aaa()
  Dim lngZ As Long
  Dim strUeberschrift As String
  Dim varQ As Variant
  Dim varZ As Variant
  With Worksheets("Tabelle")
    strUeberschrift = .Range("C1").Value
    varQ = .Range("B5").Resize(.Cells(.Rows.Count, 8).End(xlUp).Row - 2, 22).Value
  End With
ReDim varZ(1 To UBound(varQ, 1), 1 To 36)
  For lngZ = 1 To UBound(varQ, 1)
    varZ(lngZ, 1) = varQ(lngZ, 1)
    varZ(lngZ, 3) = varQ(lngZ, 2)
    varZ(lngZ, 4) = varQ(lngZ, 6)
    varZ(lngZ, 5) = varQ(lngZ, 7) & " " & varQ(lngZ, 8) & " " & varQ(lngZ, 9)
    varZ(lngZ, 8) = varQ(lngZ, 14)
    varZ(lngZ, 9) = varQ(lngZ, 13)
    varZ(lngZ, 10) = varQ(lngZ, 12)
    varZ(lngZ, 11) = varQ(lngZ, 10)
    varZ(lngZ, 12) = varQ(lngZ, 11)
    varZ(lngZ, 16) = varQ(lngZ, 15)
    varZ(lngZ, 17) = varQ(lngZ, 16)
    varZ(lngZ, 18) = varQ(lngZ, 18)
    varZ(lngZ, 19) = varQ(lngZ, 19)
    varZ(lngZ, 22) = varQ(lngZ, 20)
    varZ(lngZ, 23) = varQ(lngZ, 21)
    varZ(lngZ, 24) = varQ(lngZ, 17)
    If Len(varZ(lngZ, 24)) Then varZ(lngZ, 25) = "KG"
    varZ(lngZ, 26) = strUeberschrift
    varZ(lngZ, 27) = varQ(lngZ, 3)
    varZ(lngZ, 28) = varQ(lngZ, 4)
    varZ(lngZ, 32) = strUeberschrift
  Next lngZ
  Worksheets("Tabelle1").Range("D3").Resize(UBound(varZ, 1), UBound(varZ, 2)).Value = varZ
End Sub
Zu Deiner letzten Frage: Die Zeilenanzahl des Zielarrays wird ja momentan der des Quellarrays angepasst. Wenn der Zielbereich größer als das Zielarray ist, bleiben die restlichen Zellen "verschont". DerZielbereich sollte halt besser vorher komplett geleert werden. Ohne Kenntnis des genauen Aufbaus kann ich dazu aber nichts sagen.

Gruß Uwe
Seiten: 1 2