Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1348to1352
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

Vergleich Werte und kopiere Zeile

Vergleich Werte und kopiere Zeile
08.02.2014 02:17:12
dip
Hallo Allerseits,
Gerne würde ich Eure Hilfe zur folgenden Problemstellung anfragen.
Und zwar geht es darum, zwei Werte in zwei verschiedenen Dateien zu vergleichen, und wenn diese übereinstimmen, die entsprechende Zeile in die andere Datei zu kopieren.
Im Detail würde es folgendermassen aussehen:
- Meine Datei "Plan" habe ich offen und starte das Makro.
- Es öffnet die Datei "IST", welche in einem anderen, bestimmten Ordner abgelegt ist. (Pfad angeben)
- Nun wird in der Datei "Plan" im Blatt "Forecast" in Spalte A (als Konstante definiert, da sich die Spaltenzuordnung ändern kann) der erste Wert ab Zeile 17 (als Konstante definiert) genommen und verglichen mit den Werten in der Datei "IST" im Blatt "IST" in Spalte B auch ab Zeile 17 (beides als Konstante definiert).
- Bei Übereinstimmung kopiert er die Zeile, wo der Wert gefunden wurde, von Spalte A bis XX (als Konstante definieren) und fügt die Zeile in die Datei "Plan" im Blatt "IST" und zwar ab Zeile 17 (beides als Konstante definiert) ein (Einfügen als Breite der Ursprungsspalte beibehalten).
- Er sucht dann weiter und bei jeder Übereinstimmung kopiert er die entsprechenden Zeile wo der Wert gefunden wurde in die Datei "Plan" ins Blatt "IST" und fügt sie unten an die bereits kopierten Zeilen hinzu.
- Falls beim Vergleich eine Zeile oder mehr übersprungen wurde, bis die nächste Übereinstimmung gefunden wurde, fügt er diese Zeile nicht direkt unter den bereits bestehenden Zeilen hinzu, sondern lässt eine Zeile frei.
- Danach nimmt er den nächsten Wert in der Datei "Plan" im Blatt "Forecast" in Spalte A und vergleich diesen mit den Werten in der Datei "IST". Bei Zellen ohne Wert diese überspringen.
- Wenn er keine Übereinstimmung mehr gefunden hat, schliesst er wieder die Datei "IST" ohne zu speichern.
Ich hoffe meine Erläuterungen helfen, Euch ein Bild vom Ablauf zu machen.
Falls Unklarheiten bestehen, stehe ich Euch gerne zur Verfügung.
Für jeden Tipp/Hilfe bin ich Euch sehr dankbar!
Beste Grüsse
Patrick

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich Werte und kopiere Zeile
11.02.2014 14:45:45
fcs
Hallo Patrick,
hier ungetestet, wie es funktionieren könnte.
Gruß
Franz
Sub Hole_Ist_nach_Plan()
Dim wkbPlan As Workbook, wkbIST As Workbook
Dim wksForecast As Worksheet, wksPlan_IST As Worksheet, wksIST_IST As Worksheet
Dim Zeile_PF As Long, Zeile_PI As Long, Zeile_II As Long, ZeileAlt As Long
Dim varWert As Variant
If MsgBox("IST-Werte nach Plan holen?", vbQuestion + vbOKCancel, _
"Hole Ist-Werte nach Plan") = vbCancel Then Exit Sub
'Konstanten für Zeilen und Spalten
'1. Zeile und Vergleichsspalte in Plan-Forecast
Const cZeile_PF1 As Long = 17, cSpalte_PF As Long = 1
'1. Zeile und Einfügespalte in Plan-IST
Const cZeile_PI1 As Long = 17, cSpalte_PI As Long = 1
'1. Zeile,Vergleichsspalte und letzte zu kopierende Spalte  in IST-IST
Const cZeile_II1 As Long = 17, cSpalte_II As Long = 2, cSpalte_IIL As Long = 15
'Objekte in Plan-Datei setzen - Blattnamen ggf. anpassen
Set wkbPlan = ActiveWorkbook
Set wksForecast = wkbPlan.Worksheets("Forecast")
Set wksPlan_IST = wkbPlan.Worksheets("IST")
Application.ScreenUpdating = False
'IST-Datei schreibgeschützt öffnen  - Verzeichnis/Name anpassen !!!
Set wkbIST = Application.Workbooks.Open(Filename:="C:\Test\IST.xlsx", ReadOnly:=True)
Set wksIST_IST = wkbIST.Worksheets("IST")
Zeile_PI = cZeile_PI1 - 1
'Forecast - Spalte mit Wert abarbeiten
With wksForecast
For Zeile_PF = cZeile_PF1 To .Cells(.Rows.Count, cSpalte_PF).End(xlUp).Row
varWert = .Cells(Zeile_PF, cSpalte_PF).Value
If varWert  "" Then
With wksIST_IST
'Wert mit Werte in IST-Tabelle vergleichen
ZeileAlt = cZeile_II1
For Zeile_II = cZeile_II1 To .Cells(.Rows.Count, cSpalte_II).End(xlUp).Row
If .Cells(Zeile_II, cSpalte_II).Value = varWert Then
'ggf. 1 Zeile beim einfügen überspringen
If Zeile_II - ZeileAlt = 1 Then
Zeile_PI = Zeile_PI + 1
Else
Zeile_PI = Zeile_PI + 2
End If
.Range(.Cells(Zeile_II, 1), .Cells(Zeile_II, cSpalte_IIL)).Copy
wksPlan_IST.Cells(Zeile_PI, cSpalte_PI).PasteSpecial _
Paste:=xlPasteColumnWidths
wksPlan_IST.Cells(Zeile_PI, cSpalte_PI).PasteSpecial _
Paste:=xlPasteAll
ZeileAlt = Zeile_II
End If
Next Zeile_II
End With 'wksIST_IST
End If
Next Zeile_PF
End With 'wksForcast
Application.CutCopyMode = False
'IST-Datei wieder schliessen
wkbIST.Close savechanges:=False
Application.ScreenUpdating = True
MsgBox "Fertig", , "Hole Ist-Werte nach Plan"
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige