Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Per VBA IDs suchen und wenn gefunden kopierte Zellen einfügen
#1
Hallo zusammen,
 
ich bin neu hier, leider noch Anfänger bei VBA und an folgendem Vorhaben am verzweifeln: 

Tabelle2 listet in Spalte B IDs auf. Eine Spalte in Tabelle1 soll nach diesen IDs durchsucht werden und, wenn gefunden, soll Tabelle1 mit Werten aus Tabelle2 aktualisiert werden (d.h. ein bestimmter Zellbereich (G:AH) aus Tabelle2 soll in Tabelle1 (L:AM) geschrieben werden.) Alles andere in Tabelle 1 soll bleiben wie es ist; alle IDs aus Tabelle 2 sollten auch in Tabelle 1 enthalten sein/gefunden werden.
Tabelle2 wird regelmäßig per Makro aktualisiert, weshalb ich mit einfachen Excelformeln nicht weiter komme.
 
Daher habe ich mich nun sehr stark in VBA eingearbeitet und mir vieles bereits angeeignet (Werte suchen, Zellbereiche kopieren, etc.); allerdings merke ich, dass mein Vorhaben für mich noch viel zu komplex ist (verschachteln von kopieren, wenn gefunden, auswählen eines anderen Zellbereiches, einfügen, etc.)
Außerdem fehlt mir momentan leider irgendwie ein grundlegende Ansatz, um weiter zu kommen: Z.B. was ggf. als Variable definieren und was nicht oder ggf. von gefundener Ausgangsposition aus weiter navigieren… etc.
 
Ich habe ein Beispiel angehangen und habe sehr vieles versucht, aber ich befürchte, mein bisheriger Code ist eher armselig und ein grundlegender Ansatz fehlt nach meinen vielen Versuchen auch.
 
Kann jemand helfen bitte?
 
Viele Grüße & einen schönen Freitag allen!


Angehängte Dateien
.xlsm   Mappe2.xlsm (Größe: 519,96 KB / Downloads: 3)
Antworten Top
#2
(21.06.2019, 08:26)Newby schrieb: Tabelle2 wird regelmäßig per Makro aktualisiert
Wenn du von VBA auf PQ änderst dann könntest du Rest auch mit PQ erledigen.
Grüsse
Detlef

Bitte keine PN!
Seit Nikolaus 2012 mit Excel 2010. Seit Ostern 2015 mit Office 365
Antworten Top
#3
Hallo Detlef,

vielen Dank für Deine Rückmeldung!

"Pq" Huh  =Formel?

Dass der Input für Tabelle2 per Makro kommt, passt so schon gut -> das Auslesen/Akutalisieren der Daten in Tabelle 1 kann dann bei Bedarf/auf Knopfdruck erfolgen.

Daher die Vorgehensweise, dass die Daten aus Tabelle2 ausgelesen werden sollen und in Tabelle1 ergänzt werden.

Hilfe hier wäre sehr, sehr großartig.

Viele Grüße
Nina
Antworten Top
#4
PQ = Power Query aka Daten abrufen und transformieren
Grüsse
Detlef

Bitte keine PN!
Seit Nikolaus 2012 mit Excel 2010. Seit Ostern 2015 mit Office 365
Antworten Top
#5
Hallo Detlef,

leider ist PQ völlig neu und ich bin mir daher nicht sicher, ob tatsächlich einfacher für mich.

VBA aus Deiner Sicht zu kompliziert mein Beispiel?
Antworten Top
#6
Für VBA müssen die VBA-Spezialisten ran.
Grüsse
Detlef

Bitte keine PN!
Seit Nikolaus 2012 mit Excel 2010. Seit Ostern 2015 mit Office 365
Antworten Top
#7
Danke dir Detlef dennoch!

@VBA-Spezialisten - anyone here? Kann jemand helfen bitte?

...das wäre wirklich super :22:
Antworten Top
#8
Hallo,

ungetestet

Code:
Sub prcX()
   Dim rngTreffer As Range
   Dim lngC As Long
   Dim strAdresse As String
  
   With Worksheets("Tabelle2")
      For lngC = 8 To .Cells(.Rows.Count, 2).End(xlUp).Row
         Set rngTreffer = Worksheets("Tabelle1").Columns(1).Find(.Cells(lngC, 2).Value, LookIn:=xlValues, lookat:=xlWhole)
         If Not rngTreffer Is Nothing Then
            strAdresse = rngTreffer.Address
            Do
               .Cells(lngC, 7).Resize(, 28).Copy rngTreffer.Offset(, 12)
            Set rngTreffer = Worksheets("Tabelle1").Columns(1).FindNext(rngTreffer)
            Loop While rngTreffer.Address <> strAdresse
         End If
      Next lngC
   End With

End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Newby
Antworten Top
#9
Stefan  - vielen herzlichen Dank Dir!

Musste nur noch die Spaltennummer von 12 auf 11 setzen, da es um 1 verschoben rüberkopiert wurde, aber nun läuft es - und ich tanze auf dem Tisch :)

Im Leben hätte ich das in absehbarer Zeit so nicht zusammen bekommen - vielen Dank Dir & ein schönes Wochenende!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste