Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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

Suchen finden bestimmt kopieren

Suchen finden bestimmt kopieren
17.09.2022 10:57:41
floboss
Hallo zusammen,
Ich stehe auf dem Schlauch. Sicher sehr einfach aber ich komme nicht drauf.
Also ich möchte gerne in einem Tabellenblatt (Daten) in der Spalte I nach dem Heutigem Datum suchen. Wenn ich es gefunden habe will ich von dieser Zeile aus bestimmte Zellen kopieren und in ein anderes Tabellenblatt (Daten2) wieder einfügen.
Quasi "Daten" I zeile 4 findet das heutige Datum. Dann kopiere aus genau der Zeile A,B,C und kopiere es nach "Daten2" A,B,C in die erste freie Zeile.
Was ich Programmiert habe ist mist.

    Dim rg As Range
Dim dat As Date
dat = Date
For Each rg In Worksheets("Data").Range("I1:I9999")
With Worksheets("Daten2")
Loletzte = .Cells(Rows.Count, 1).End(xlUp).Row + 1
If rg = dat Then
Debug.Print "hallo"
End If
End With
Next
Hoffe da kann mir jemand auf die Sprünge helfen.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen finden bestimmt kopieren
17.09.2022 11:08:32
ralf_b
ungetestet.

Option Explicit
Sub test()
Dim rg As Range
Dim dat As Date
Dim loletzteD&, loletzteA&
dat = Date
With Worksheets("Daten2")
loletzteD = .Cells(Rows.Count, 1).End(xlUp).Row + 1
End With
With Worksheets("Data")
loletzteA = .Cells(Rows.Count, "I").End(xlUp).Row
End With
With Worksheets("Data")
For Each rg In .Range("I1:I" & loletzteA)
If rg.Value = dat Then
.Print "hallo"
Worksheets("Daten2").Cells(loletzteD, "A").Resize(1, 3).Value = .Cells(rg.Row, "A").Resize(1, 3).Value
loletzteD = loletzteD + 1
End If
Next
End With
End Sub

Anzeige
AW: Suchen finden bestimmt kopieren
17.09.2022 11:48:17
floboss
Getestet. und für 95% gut befunden. Aber die anderen 5 % waren noch mein Fehler. Es Funktioniert super es macht genau das was ich wollte. Dafür schon mal ein mega Danke Danke Danke. Nun habe ich nur noch das Problem das alles was kopiert wurde sich immer wiederholt mit der Ausführung. Habe die Sachen doppelt. Am besten er schaut auf Spalte A. Dort ist eine Laufende Nummer. Wenn man nach der vergleicht müsste es ja möglich zu sein doppelte Einträge zu vermeiden. Wenn du mir da noch was Zaubern könntest. Wäre es sehr lieb.
AW: Suchen finden bestimmt kopieren
17.09.2022 11:58:35
ralf_b
irgendwas ist doch immer.
Wenn ich dich richtig verstanden habe, dann ist die laufendeNr tatsächlich eine Zahl
ungetestet!

Option Explicit
Sub test()
Dim rg As Range
Dim dat As Date
Dim loletzteD&, loletzteA&
Dim lfdNR As Long
dat = Date
With Worksheets("Daten2")
loletzteD = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lfdNR = .Cells(loletzteD - 1, "A").Value
End With
With Worksheets("Data")
loletzteA = .Cells(Rows.Count, "I").End(xlUp).Row
End With
With Worksheets("Data")
For Each rg In .Range("I1:I" & loletzteA)
If lfdNR 

Anzeige
AW: Suchen finden bestimmt kopieren
17.09.2022 13:19:58
floboss
Ja die Laufende NR. habe ich in "Data" das ist gleich Spalte A . Jeder neue eintrag von mir bekommt eine neue laufende nummer. Diese nummer kopiere ich sogar mit rüber in "Data2" Ich möchte halt wenn ich das Makro ausführe einmal die daten gesucht gefunden und kopiert haben. Sollte ich danach nochmal das Makro ausführen macht er mir das gleiche Ergebnis eine zeile weiter unten in "Data2" wieder hin. Das ist dann dort ein doppelter Eintrag den ich nicht gebrauchen kann. Doppelte sollten damit gelöscht werden.
Wenn ich dein ausprobiere sagt er Typ unverträglich. LongPtr habe ich schon versucht und auch String Integer variant mag er alles nicht.
Anzeige
AW: Suchen finden bestimmt kopieren
17.09.2022 13:31:54
GerdL
Wie sooft?

Option Explicit
Sub test2()
Dim rg As Range
Dim dat As Date
Dim loletzteD&, loletzteA&
dat = Date
With Worksheets("Daten2")
loletzteD = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lfdNR = .Cells(loletzteD - 1, "A").Value
End With
With Worksheets("Data")
loletzteA = .Cells(Rows.Count, "I").End(xlUp).Row
End With
With Worksheets("Data")
For Each rg In .Range("I1:I" & loletzteA)
If rg.Value = dat Then
If IsError(Application.Match(.Cells(rg.Row, "A"), Worksheets("Data").Columns("A"), 0)) Then
.Print "hallo"
Worksheets("Daten2").Cells(loletzteD, "A").Resize(1, 3).Value = .Cells(rg.Row, "A").Resize(1, 3).Value
loletzteD = loletzteD + 1
End If
End If
Next
End With
End Sub
Gruß Gerd
Anzeige
AW: Suchen finden bestimmt kopieren
17.09.2022 14:09:56
floboss
Hallo Ihr zwei,
ich bedanke mich ganz Herzlich bei euch.
habe jetzt alles fertig so wie ich wollte. Ihr habt mir das Wochenende versüßt.
Für alle anderen die das eventuell gebrauchen können.

Option Explicit
Sub test2()
Dim rg As Range
Dim dat As Date
Dim loletzteD&, loletzteA&
dat = Date
With Worksheets("Daten2")
loletzteD = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lfdNR = .Cells(loletzteD - 1, "A").Value
End With
With Worksheets("Data")
loletzteA = .Cells(Rows.Count, "I").End(xlUp).Row
End With
With Worksheets("Data")
For Each rg In .Range("I1:I" & loletzteA)
If rg.Value = dat Then
If IsError(Application.Match(.Cells(rg.Row, "A"), Worksheets("Data2").Columns("A"), 0)) Then
.Print "hallo"
Worksheets("Daten2").Cells(loletzteD, "A").Resize(1, 3).Value = .Cells(rg.Row, "A").Resize(1, 3).Value
loletzteD = loletzteD + 1
End If
End If
Next
End With
End Sub
Dort ist noch eine Kleinigkeit geändert. So funktioniert es sehr gut.
Anzeige
AW: Suchen finden bestimmt kopieren
21.09.2022 13:18:53
floboss
Ich wieder.
also ich habe nun das soweit fertig gemacht bei mir das es funktioniert.
Allerdings bin ich noch nicht ganz zufrieden mit meiner Arbeit und muss das nochmal Optimieren.
Idee ist da Lösung nicht .
Also wie am Anfang des Themas wollte ich werte kopieren in ein anderes Datenblatt und das ganze so lange wie es auch Zeilen gibt.
Nun würde ich gerne allen Mitarbeitern bei uns eine Datei geben wo sie genau so die Felder alle gleich sind wie bei mir. Alle Mitarbeiter schieben mir das ganze in einen gesammelten Ordner.
Nun möchte ich gerne das ich alle Excel Datei´n in diesem Ordner nach einander öffne und mir alle eingetragenen Daten in meine kopieren kann. Bei mir muss es aber fortlaufend nach unten weiter eingefügt werden und niemals überschrieben.
Z.b. ich habe 20 Datei´n jede Datei hat unterschiedlich viele Zeileneinträge. Ich möchte dann in meiner Datei jede Mappe durchgehen und jede zeile bei mir einfügen. Erste Mappe fertig dann 2te Mappe und dort auch alles rauskopieren und bei mir einfügen ohne das was überschrieben wird.
Ich hoffe Ihr könnt meinen gedanken folgen und versteht mein vorhaben.
Anzeige
AW: Suchen finden bestimmt kopieren
21.09.2022 13:24:48
floboss
Ergänzung

Sub Daten_kopieren()
Dim Pfad As String, Dateiname As String, iRow As Long
Application.ScreenUpdating = False
Pfad = "C:\Eigene Dateien\"
Dateiname = Dir(Pfad & "*.xls")
Do While Dateiname  ""
Workbooks.Open Filename:=Pfad & Dateiname
iRow = ThisWorkbook.Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0).Row
If iRow 
Diesen Code habe ich im Internet gefunden. Klappt soweit auch nur ist noch nicht ganz was ich wollte.
Kann ich da vielleicht drauf aufbauen? damit ich bekomme was ich möchte?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige