Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
916to920
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
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Vergleichen und Kopieren

Vergleichen und Kopieren
23.10.2007 13:29:00
Klaus
Hallo Forum,
ich habe einen 10spaltigen Wertebereich 1 (A1:J141) mit Spaltenüberschriften
und einen zu vergleichenden Bereich 2 (Q2:Z6722) mit den gleichen Überschriften
(Name 1 = StdPlanSpalte, Name 2 = StdPlanAlles).
Es sollen nun zeilenweise die Werte von (Bereich 1.Spalte B) verglichen werden mit den
Werten (Bereich 2.Spalte R). Bei Übereinstimmung sollen die Werte der Zeile aus dem Bereich 1
über die Fundstellen-Zeile von Bereich 2 kopiert werden. Das habe ich mit untenstehendem Makro
bereits gelöst. Jetzt meine Frage:
Wenn KEINE Übereinstimmung gefunden wird, soll die zu kopierende Zeile in die erste freie Zeile
im Bereich 2 kopiert werden. Kann mir da jemand von Euch helfen?
Beispielmappe anbei
https://www.herber.de/bbs/user/47014.xls
Für Antworten Dank im voraus
Klaus

Sub VergleichenKopieren()
Dim rng As Range
Dim iRow As Integer
iRow = 2
Do Until IsEmpty(Cells(iRow, 2))
Set rng = Worksheets("Archiv").Columns(18).Find( _
what:=Cells(iRow, 2), lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
Range(rng.Offset(0, -1), rng.Offset(0, 8)).Value = _
Range(Cells(iRow, 1), Cells(iRow, 11)).Value
End If
***wenn keine Fundstelle, dann Copy in 1. leere Zeile Bereich 2***
iRow = iRow + 1
Loop
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleichen und Kopieren
23.10.2007 14:10:00
Peter
Hallo Klaus,
wenn ich dich richtig verstanden habe, dann so:

Public Sub VergleichenKopieren()
Dim WkSh     As Worksheet
Dim rng      As Range
Dim iRow     As Integer
Dim lLetzte  As Long
Set WkSh = Worksheets("Archiv")
iRow = 2
Do Until IsEmpty(Cells(iRow, 2))
Set rng = WkSh.Columns(18).Find( _
What:=Cells(iRow, 2), Lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
WkSh.Range(rng.Offset(0, -1), rng.Offset(0, 8)).Value = _
WkSh.Range(Cells(iRow, 1), Cells(iRow, 11)).Value
Else
lLetzte = Range("Q65536").End(xlUp).Row + 1
WkSh.Range(Cells(iRow, 1), Cells(iRow, 10)).Copy Destination:= _
WkSh.Cells(lLetzte, 17)
End If
'***wenn keine Fundstelle, dann Copy in 1. leere Zeile Bereich 2***
iRow = iRow + 1
Loop
End Sub


Gruß Peter

Anzeige
AW: Vergleichen und Kopieren
23.10.2007 14:34:00
Klaus
Hallo Peter,
super, vielen Dank! Klappt hervorragend. Eine Frage hätte ich noch:
Wenn ich beim Kopieren nicht die erste freie Zeile von UNTEN
sondern immer von OBEN füllen wollte, wie müßte dann die Variable
lLetzte = Range("Q65536").End(xlUp).Row + 1
definiert sein?
Vielen Dank noch einmal
Klaus
:-)

AW: Vergleichen und Kopieren
23.10.2007 15:11:30
Peter
Hallo Klaus,
dazu fällt mir z. Zt. nur folgendes ein:

Public Sub erstefreie()
Dim lErste  As Long: lErste = 2
Do
If Cells(lErste, 17) = "" Then Exit Do
lErste = lErste + 1
Loop Until Cells(lErste, 17) = ""
MsgBox "die erste freie Zelle ist in Zeile  """ & lErste & """ ", _
64, "   Info für " & Application.UserName
End Sub


Gruß Peter

Anzeige
herzlichen Dank
23.10.2007 15:19:00
Klaus
Herzlichen Dank Peter,
das hilft mir sehr weiter ...
Gruß aus Hamburg
Klaus

AW: herzlichen Dank
23.10.2007 15:20:00
Peter
Hallo Klaus,
auch das geht:
lErste = ActiveSheet.Range("Q2:Q1000").SpecialCells(xlCellTypeBlanks).Row
Gruß Peter

AW: herzlichen Dank
23.10.2007 16:15:00
Klaus
Hallo Peter,
das ist ja noch besser (kürzer). Super.
Einen schönen Tag noch
Klaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige