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

Wenn A7=B5 dann kopiere Bereich und füge ein

Wenn A7=B5 dann kopiere Bereich und füge ein
Matze
Hallo VBA-Götter,
ich versuche gerade für einen "Jahresüberblick" eine Ansicht mit Daten aus einem anderen Blatt zu erstellen.
Dazu soll abgeglichen werden, ob das Datum in A7 = dem in B5 entspricht (nur als Beispiel der Bereich soll über das ganze Jahr gehen) und wenn das Wahr ist, soll aus dem Blatt "Daten" der Bereich G7 bis "EndeInhalt" in B7:"EndeInhalt" kopiert werden.
Ich hatte versucht dies mit einer Wenn-Abfrage zu realisieren, aber das wird bei 500x700 Datenzellen extrem unperformant.
Vielen Dank für Eure Hilfe
Matze
Im Anhang noch ein Beispiel meiner Daten
https://www.herber.de/bbs/user/78823.xlsm

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wenn A7=B5 dann kopiere Bereich und füge ein
09.02.2012 19:07:53
Dirk
Hallo Matze,
vorab ich würd mich nicht so betitelt (VBA-Götter):-D
da deine Beschreibung nicht wirklich mit deiner Datei übereinstimmt ist es etwas schwer dir zu Helfen.
Wenn ich nur auf deine Worte vertraue und die Richtig verstehe suchst du ein tool, das dir wenn a7=b5 ist
die Daten von sheets("Daten").Range("G7:z7") nach B7.... kopiert. (wenn die zeile bis z beschrieben ist)
sollte ich das richtig verstanden haben kannst du ja mal in einer kopie das hier testen
Sub t2()
Dim lz, alz, az As Range
Dim ber1, ber2 As String
With ThisWorkbook.Sheets("AP (1A)").Range("a7:a20000")
Set lz = .Find(what:="*", after:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
End With
Set alz = Range("a7:a" & lz.Row)
For Each az In alz
If az.Offset(-2, 1) = az Then
ber1 = Range(Cells(az.Row, 7), Cells(az.Row, 200)).Address
With ThisWorkbook.Sheets("Daten").Range(ber1)
Set lz = .Find(what:="*", after:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
End With
ber1 = Range("g" & lz.Row, lz.Address).Address
ber2 = Range("b" & az.Row, Cells(az.Row, (lz.Column - 5))).Address
MsgBox (ber1 & vbCrLf & ber2)
Sheets("Daten").Range(ber1).Copy Destination:=Sheets("AP (1A)").Range(ber2)
End If
Next
End Sub
Gruß
Dirk
Anzeige
AW: Wenn A7=B5 dann kopiere Bereich und füge ein
10.02.2012 14:16:39
Matze
Hallo Dirk,
das mit den Göttern ist doch immer eine Angelegenheit der Sichtweise. Aus meinem Blickwinkel bist du ein Gott :)
Grundsätzlich hast du meine Beschreibung richtig verstanden, soweit ich sie richtig beschrieben habe.
Dein Makro tut auch schon mal in Ansätzen, was ich erwartet habe ...
Zwei "Kleinigkeiten" sind da aber noch:
- zum einen habe ich nicht erwähnt, dass in Spalte A und Reihe 5 eine Formel steht, die jeweils ein Datum aus einem anderen Blatt übernimmt (='Daten'!A7 .... ='Datum'!E12 .... usw.) .... ich weiß nicht ob das beim vergleichen ein Problem darstellt, oder ob da eine Varibale als Wert deklariert werden muss, denn komischweise funktioniert dein Makro nur in den Zellen in denen ich Datenbedingt "#NV" stehe habe
- zweitens, sollte das Makro die Reihe 5 Zellenweise mit den Zellen in Spalte A auf Gleichheit untersuchen und bei "wahr" am besten den WERT aus dem Blatt Daten in den "Schnittpunkt" kopieren, da ich sonst lauter Formeln aus Blatt "Daten" noch einmal in dem Blatt "AP (1A)" stehen habe.
Ich danke Dir wie verrückt, dass du dich mit meinen Problemen beschäftigst.
Grüße
Matze
Anzeige
AW: Wenn A7=B5 dann kopiere Bereich und füge ein
10.02.2012 18:53:19
Dirk
Hallo Matze,
deinen ersten punkt kann ich nicht bestätigen, kann auch sein, das ich das erst geprüft hatte nachdem ich mit den änderungen fertig war.
zu 2
ich hoffe ich bin nicht wieder schwer von begriff gewesen.
prüfen a7=b2 wenn true dann kopiere alle Werte (ohne Formel) aus dem Blatt Daten (die Zeile)
prüfen a8=c2 wenn true dann kopiere alle Werte (ohne Formel) aus dem Blatt Daten (die Zeile)
prüfen a9=d2 wenn true dann kopiere alle Werte (ohne Formel) aus dem Blatt Daten (die Zeile)
....
wenn das so richtig ist dann bitte schön
https://www.herber.de/bbs/user/78847.xlsm
Die Datei hatte ich selber bebaut, wie ich deine Beschreibung verstanden hatte.
wenn nicht würd ich dich bitten ne Beispieldatei (mit dem Blatt Daten) hochzuladen.
kannst die Daten ja durch ein paar Zahlen Tausen.
Gruß
Dirk
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige