Clever-Excel-Forum

Normale Version: Daten übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
ich bin neu hier, desshalb sollte ich was falsch machen einfach melden.

Ich will aus einer laufend neu generierten Tabelle(Daten) Werte, die einer Person zugeordnet sind, in eine Übersichtstabelle übertragen. Das Problem ist, dass die Anordnung in der Übersicht nicht mit der Anordnung in der Tabelle (Daten) übereinstimmt. Kann mir jemand einn Tipp geben, wie ich sowas zustande bringe, eventuell auch per VBA.

Gruß und schönes Wochenende
Moin,

mit Powerquery (Daten->Daten Abrufen->aus Datei->Aus Excel Arbeitsmappe).

Für konkretere Antworten benötigt man eine konkretere Frage.

Viele Grüße
derHöpp
Hallo der Höpp,
danke für die Rückmeldung.
Natürlich hast du recht, wer eine gute Antwort will sollte auch gute Fragen stellen. Ich hatte die Hoffnung, ein kurzer Denkanstoss würde ausreichen. Leider hat das nicht geklappt.
Die von dir genannte Fuktion kenne ich leider noch nicht. Desshalb eine ausführliche Frage:

In TABELLE1 stehen in Spalte 1 Namen, dahinter in den folgenden Spalten Werte.
In TABELLE2 stehen auch in der Spalte 1 die Namen und in Spalte 2 Werte. Leider schafft es das externe Programm, das die TABELLE2 wöchentlich produziert, die Namen durcheinander zu würfeln.
Mein Wunsch wäre jetzt, irgendwie (ohnen viel Aufwand) die Werte aus Spalte 2 Aus TABELLE2 in TABELLE1 in die nächste leere Spalte zu bringen, so dann die Werte bei den richtigne Namen stehen.

Vielen Dank für jede Unterstützung
Hola,
immer noch etwas vage.
Es kommen wöchentlich neue Daten hinzu und sollen in Tabelle 1 immer weiter nach rechts geschrieben werden, wie ein Verlauf? Oder sollen die Daten immer in die gleiche Spalte geschrieben werden?
Gruß,
steve1da
Ja, immer eine neue Spalte dazu
(02.03.2024, 09:42)juergen schrieb: [ -> ]... eventuell auch per VBA.

Moin, 19 

per VBA wie in der Beispieldatei: 21

Das ist jetzt nur ein Beispiel. In Tabelle2 arbeite ich mit "ZUFALLSMATRIX" damit die Namen und die Werte sich auch ändern und nicht immer das gleiche nach Tabelle1 kopiert wird. 05

Der Code ist ausreichend kommentiert.

Man(n) muss auch nicht über einen Button gehen. Lässt sich auch über Ereignismakros lösen. Kommt aber immer auf die Gegebenheiten an. Exclamation

Hier der Code:
Code:
' Variablendeklaration erforderlich!
' https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/option-explicit-statement
Option Explicit
Public Sub Main()
    ' Variablendeklaration
    Dim lngTMP As Long
    ' Wenn ein Fehler auftritt gehe zur angegebenen Sprungmarke
    ' https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/on-error-statement
    On Error GoTo Fin
    ' Merken wie die aktuelle Berechnung der Formeln eingestellt ist.
    lngTMP = Application.Calculation
    ' Dann auf Manuell setzen.
    ' https://learn.microsoft.com/de-de/office/vba/api/excel.application.calculation
    Application.Calculation = xlManual
    ' Bildschirmaktualisierung aussschalten.
    ' https://learn.microsoft.com/de-de/office/vba/api/excel.application.screenupdating
    Application.ScreenUpdating = False
    ' Ereigniscodes werden nicht ausgeführt - falls vorhanden.
    ' https://learn.microsoft.com/de-de/office/vba/api/excel.application.enableevents
    Application.EnableEvents = False
    ' Das With-Konstrukt. Alles was sich auf dieses Konstrukt beziehen soll MUSS mit einem Punkt beginnen.
    ' https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/with-statement
    With Tabelle1
        ' Trage in die erste freie Spalte in der ersten Zeile "Wert_" plus die Spaltenanzahl ein.
        .Cells(1, .Cells(1, .Columns.Count).End(xlToLeft).Column + 1).Value = "Wert_" & .Cells(1, .Columns.Count).End(xlToLeft).Column
        ' Kopiere die Zelle DAVOR.
        .Cells(1, .Cells(1, .Columns.Count).End(xlToLeft).Column - 1).Copy
        ' Und übergebe der neuen Zelle das Format.
        .Cells(1, .Cells(1, .Columns.Count).End(xlToLeft).Column).PasteSpecial Paste:=xlPasteFormats
        ' Das Ameisenrennen um die Zelle - durch Copy ausgelöst - beenden. Zwischenspeicher leeren.
        ' https://learn.microsoft.com/de-de/office/vba/api/excel.application.cutcopymode
        Application.CutCopyMode = False
        ' Beziehe dich mit With auf den Bereich nächste freie Spalte Zeilen 2 bis 91.
        With .Range(.Cells(2, .Cells(2, .Columns.Count).End(xlToLeft).Column + 1), .Cells(91, .Cells(2, .Columns.Count).End(xlToLeft).Column + 1))
            ' Trage die Formel "=XVERWEIS($A2;Tabelle2!A:A;Tabelle2!B:B;"";0;1)" ein.
            ' Formula2 muss dann in der englischen Schreibweise eingetragen werden.
            ' Also Semikolon sin Komma. XVERWEIS = XLOOKUP. In der Formel vorkommende Hochkomma müssen gedoppelt werden.
            .Formula2 = "=XLOOKUP($A2,Tabelle2!A:A,Tabelle2!B:B,"""",0,1)"
            ' Und überschreibe die Formel gleich mit ihren Werten.
            .Value = .Value
        End With
    End With
Fin:
    ' Jetzt die Berechnung auf den gemerkten Wert setzen.
    Application.Calculation = lngTMP
    ' Bildschirmaktualisierung einschalten.
    ' https://learn.microsoft.com/de-de/office/vba/api/excel.application.screenupdating
    Application.ScreenUpdating = True
    ' Ereigniscodes werden wieder ausgeführt - falls vorhanden.
    ' https://learn.microsoft.com/de-de/office/vba/api/excel.application.enableevents
    Application.EnableEvents = True
    ' Wenn ein Fehler aufgetreten ist gib ihn mit Nummer und Beschreibung aus.
    If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
Hallo zusammen,
Danke für eure Unterstützung,  Problem gelöst