Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Werte suchen, kopieren & einfü

VBA - Werte suchen, kopieren & einfü
08.12.2022 13:42:45
Thomas
Hallo zusammen, ich benötige mal Hilfe bei einer VBA Herausforderung.
Ich habe 2 Tabellenblätter, in einem werden wöchentlich Daten für Zeitraum x erfasst. In einem 2. Tabellenblatt möchte ich nun diese Daten "hart" reinkopieren.
Das geht natürlich auch per Hand, aber ich würde mir die Arbeit gern sparen und suche daher nach Optimierungsmöglichkeiten.
Im Arbeitsblatt Daten sollen alle Daten herauskopiert werden, im Blatt Eingabe soll das entsprechende Datum gesucht werden und die Daten dann eingefügt werden.
Die Reihenfolge der Daten in jeder Zeile ist immer gleich, daher braucht man eigentlich keinen Sverweis. Kann hier jemand bitte helfen?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Werte suchen, kopieren & einfü
08.12.2022 14:02:24
FrittenJupp
Geht doch auch per Formel:
Zeile B3, dann kopieren
=WENNFEHLER(SVERWEIS($A$3;Daten!$A:$Q;VERGLEICH(B$2;Daten!$2:$2;0);0);"")
AW: VBA - Werte suchen, kopieren & einfü
08.12.2022 15:28:45
Thomas
Danke, aber damit bleibt es ein manueller Vorgang, der evtl. Fehler nach sich ziehen kann.
Ich muss jede Woche Daten der letzten 8 Wochen (Stempelzeiten) erfassen. Diese Daten verändern sich durch Korrekturen ja immer mal wieder - daher rückwirkend.
Daten kleiner 9 Wochen sind safe - die Daten davor veränderbar.
Ich habe also in dem Tabellenblatt Daten eine Auswertung drin, die von heute minus 8 Woche geht und diese möchte ich in einer Datenbank erfassen.
Da würde ein Makros sicherlich helfen - ich stell mir das wie folgt vor:
Im Tabellenbaltt Daten B2 steht immer das Datum (heute minus 8 Wochen)
Anhand dieses Datum muss in der Datenbank (Tabellenblatt Eingabe) die richtige Zelle gefunden werden. Dann die Werte aus B3 kopieren und hart im Tabellenblatt EIngabe einfügen.
Geht das?
Anzeige
AW: VBA - Werte suchen, kopieren & einfü
08.12.2022 17:41:18
Yal
Hallo Thomas,
mit Power Query (PQ) wärst Du vielleicht besser bedient. Insbesondere, wenn deine Quelldaten aus einer Datei kommen.
Ein guter Überblick über PQ bekommt man hier: https://excelhero.de/power-query/power-query-ganz-einfach-erklaert
Folgende Makro geht über PQ: die Eingangsliste wird zu einer "intelligente Tabelle" (Siehe "Einfügen, "Tabelle"), diese wird in einer PQ-Abfrage als Quelle verwendet. Darin werden alle Spalte ausser die erste depivotiert, gefiltert auf Datum "nach" Heute minus 8 Wochen, dann wieder pivotiert und ausgegeben, Anschliessend wird der Link zu Query aufgelöst.
Wenn Du eine "Auswertung" auf diese Daten, wäre vieilleicht sinnvoll, die Daten nicht normal zu pivotieren, bevor sie ausgegeben werden.

Sub Daten_ausfiltern()
Dim Elt
Dim ws As Worksheet
'Löschung aller Queries
For Each Elt In ActiveWorkbook.Queries
Elt.Delete
Next
'Herstellung der "intelligente Tabelle"
Set ws = Worksheets("Eingabe")
If ws.ListObjects.Count > 0 Then
Set Elt = ws.ListObjects(1)
Else
Set Elt = ws.ListObjects.Add(xlSrcRange, Range("$A$2").CurrentRegion, , xlYes)
End If
'Herstellung der Power Query Abfrage
ActiveWorkbook.Queries.Add Name:=Elt.Name, Formula:= _
"let" & Chr(13) & "" & Chr(10) & "    Quelle = Excel.CurrentWorkbook(){[Name=""" & Elt.Name & """]}[Content]," & Chr(13) & "" & Chr(10) _
& "    #""Entpivotierte andere Spalten""= Table.UnpivotOtherColumns(Quelle, {""Spalte1""}, ""Attribut"", ""Wert"")," & Chr(13) & "" & Chr(10) _
& "    #""Geänderter Typ1"" = Table.TransformColumnTypes(#""Entpivotierte andere Spalten"",{{""Attribut"", type date}})," & Chr(13) & "" & Chr(10) _
& "    #""Gefilterte Zeilen"" = Table.SelectRows(#""Geänderter Typ1"", each [Attribut] >= Date.From(Date.AddWeeks(DateTime.LocalNow(), -8)))," & Chr(13) & "" & Chr(10) _
& "    #""Pivotierte Spalte"" = Table.Pivot(Table.TransformColumnTypes(#""Gefilterte Zeilen"", {{""Attribut"", type text}}, ""de-DE""), List.Distinct(Table.TransformColumnTypes(#""Gefilterte Zeilen"", {{""Attribut"", type text}}, ""de-DE"")[Attribut]), ""Attribut"", ""Wert"", List.Sum)" & Chr(13) & "" & Chr(10) _
& "in" & Chr(13) & "" & Chr(10) & "    #""Pivotierte Spalte"""
'Neues Blatt
Sheets.Add After:=ActiveSheet
Set ws = ActiveSheet
'Abfrage in das Blatt herausgeben
With ws.ListObjects.Add(SourceType:=0, _
Source:="OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & Elt.Name & ";Extended Properties=""""", Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [" & Elt.Name & "]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
'Aktualisieren
.Refresh BackgroundQuery:=False
End With
'Verlinkung zu Query lösen
ws.ListObjects(1).Unlink
End Sub
VG
Yal
Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige