Registriert seit: 02.03.2024
Version(en): 365
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
Registriert seit: 26.09.2022
Version(en): 2019
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
Registriert seit: 02.03.2024
Version(en): 365
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
Registriert seit: 16.04.2014
Version(en): xl2016/365
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
Registriert seit: 02.03.2024
Version(en): 365
Ja, immer eine neue Spalte dazu
00202
Nicht registrierter Gast
(02.03.2024, 10:42)juergen schrieb: ... eventuell auch per VBA.
Moin,
per
VBA wie in der
Beispieldatei:

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.
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.

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
Registriert seit: 02.03.2024
Version(en): 365
Hallo zusammen,
Danke für eure Unterstützung, Problem gelöst