Anzeige
Archiv - Navigation
1892to1896
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 wie "sverweis" automatisch ausfüllen

VBA wie "sverweis" automatisch ausfüllen
15.08.2022 14:46:35
David
Hallo Leute,
um mir viel Arbeit in Zukunft zu sparen dachte ich an ein kleines Makro das mir helfen könnte.
Ich bin leider nur vertraut mit dem Makrorekorder, der mir an der stelle aber nicht hilft.
Hierzu eine Beispieldatei bei der die Positionen der Original Datei entsprechen. Die Tabelle ist normalerweise aber deutlich länger: https://www.herber.de/bbs/user/154655.xlsm
Was ich mir wünsche:
1. Das Makro soll die Dateien Aus der Tabelle auf "Tabelle1" in "Cluster" ziehen. Jeder Match ist in Cluster schon vorhanden und muss nicht angefügt werden.
2. Werte die schon vorhanden sind sollen nicht geändert werden.
3. Es kann sein das in Cluster in einer Zeil schon einzeln Werte stehen, da sollen die noch nicht vorhandenen nachgetragen werden.
Mit 1. und 2. wäre ich schon sehr glücklich. Bei 3. weiß ich gar nicht ob das so leicht umsetzbar ist.
Ich hoffe ich habe mich verständlich genug ausgedrückt. Weiß einer wie man da vorgehen könnte und kann mir helfen?
Lieben Dank :)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA wie "sverweis" automatisch ausfüllen
15.08.2022 18:08:27
ReginaR
Hi,
teste mal diesen Code. Ich habe mich genau an Deine Spalten gehalten (Übertragungswerte in Tabelle 1 stehen ab Spalte 49 und sollen in Cluster ab Spalte 5 eingetragen werden). Wenn das nicht so passt, musst Du die Werte für die Spalten ändern.

Public Sub uebertrag()
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Dim lng_letzte_zeile As Long
Dim lng_zeile_ziel As Long
Dim lng_zeile_quelle As Long
Dim lng_spalte_ziel As Long
Dim lng_spalte_quelle As Long
Dim rng_fund As Range
Set obj_wks_ziel = ThisWorkbook.Worksheets("Cluster")  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = ThisWorkbook.Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
With obj_wks_quelle
lng_letzte_zeile = .Cells(Rows.Count, 36).End(xlUp).Row - 1
For lng_zeile_quelle = 5 To lng_letzte_zeile
Set rng_fund = obj_wks_ziel.Columns(4).Find(.Cells(lng_zeile_quelle, 36), LookIn:=xlValues, lookat:=xlWhole)
If Not rng_fund Is Nothing Then
lng_spalte_quelle = 49
For lng_spalte_ziel = 5 To 10
If obj_wks_ziel.Cells(rng_fund.Row, lng_spalte_ziel) = "" Then
obj_wks_ziel.Cells(rng_fund.Row, lng_spalte_ziel) = .Cells(lng_zeile_quelle, lng_spalte_quelle)
End If
lng_spalte_quelle = lng_spalte_quelle + 1
Next
End If
Next
End With
End Sub
Gruß Regina
Anzeige
AW: VBA wie "sverweis" automatisch ausfüllen
16.08.2022 09:58:56
David
Hey Regina,
genau das. Krass, es funktioniert wie ich es mir vorgestellt habe. Riesen Dank dir :)
Eine Sache noch, was müsste man ändern, damit am Ende doch Werte Überschrieben werden?
Liebe Grüße
AW: VBA wie "sverweis" automatisch ausfüllen
16.08.2022 10:13:28
ReginaR
Hi,
dann müsstest Du in der For-Schleife die Zeile mit dem if und dem end if wegnehmen.
Gruß Regina
AW: VBA wie "sverweis" automatisch ausfüllen
22.08.2022 13:25:04
David
Hey,
welche genau? Hab rumprobiert, aber das wollte nicht so richtig.
Danke schonmal und liebe Grüße
AW: VBA wie "sverweis" automatisch ausfüllen
22.08.2022 14:53:15
ReginaR
Hi, gemeint ist die innere Schleife, so:

Public Sub uebertrag()
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Dim lng_letzte_zeile As Long
Dim lng_zeile_ziel As Long
Dim lng_zeile_quelle As Long
Dim lng_spalte_ziel As Long
Dim lng_spalte_quelle As Long
Dim rng_fund As Range
Set obj_wks_ziel = ThisWorkbook.Worksheets("Cluster")  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = ThisWorkbook.Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
With obj_wks_quelle
lng_letzte_zeile = .Cells(Rows.Count, 36).End(xlUp).Row - 1
For lng_zeile_quelle = 5 To lng_letzte_zeile
Set rng_fund = obj_wks_ziel.Columns(4).Find(.Cells(lng_zeile_quelle, 36), LookIn:=xlValues, lookat:=xlWhole)
If Not rng_fund Is Nothing Then
lng_spalte_quelle = 49
For lng_spalte_ziel = 5 To 10
obj_wks_ziel.Cells(rng_fund.Row, lng_spalte_ziel) = .Cells(lng_zeile_quelle, lng_spalte_quelle)
lng_spalte_quelle = lng_spalte_quelle + 1
Next
End If
Next
End With
End Sub
Gruß Regina
Anzeige

219 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige