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

Werte untereinander kopieren

Werte untereinander kopieren
13.02.2023 14:58:48
Chris
Hallo VBAler,
ich möchte in einem Range jeden Wert mit 1 in einen anderen Range untereinander kopieren. Das unten stehende Makro listet die Werte, die mit 1 markierte sind zwar auf, jedoch erfolgen diese Werte mehrfach, obwohl jeder Wert nur einmal vorhanden ist. Was muss man ändern?
Gruß
Chris
Sub x()
 Dim i As Long
       
    For i = 2 To LetzteZeile
    
        If Sheets("Test").Cells(i, 5) = "1" Then Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy
        Sheets("Test").Cells(i, 10).PasteSpecial xlPasteValues
        
    Next i
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Werte untereinander kopieren
13.02.2023 15:06:30
Rudi
Hallo,
wenn i 6lt 4 ist, geht das schief:
Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy
Cells(3, 5).Offset(-3) ergibt Cells(0, 5)
Weißt du was du tust?
Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy kopiert E:G 3 Zeilen über der gefundenen Zelle.
Gruß
Rudi
AW: Werte untereinander kopieren
13.02.2023 15:51:41
Chris
Hallo Rudi,
Danke für den Hinweis. Ist geändert und macht das, was es soll!
Gruß
Chris
AW: Werte untereinander kopieren
13.02.2023 15:16:23
Daniel
Hi
so wie du das geschrieben hast, gehört nur das .Copy zum IF-Block. Das PasteSpecial gehört nicht mehr zum IF-Block und wird daher bei jedem Schleifendurchlauf ausgeführt. Wenn in dem Schleifendurchlauf das .Copy nicht ausgeführt wird, dann wird der zuletzt kopierte Wert nochmal eingefügt.
du musst also .Copy und .PasteSpecial gemeinsam in den IF-Block aufnehmen.
Wenn man mehrere Befehle für den IF-Block hat, sollte man nach dem THEN nicht weiterschreiben sondern eine neue Zeile beginnen:
         If Sheets("Test").Cells(i, 5) = "1" Then 
              Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy
              Sheets("Test").Cells(i, 10).PasteSpecial xlPasteValues
         end if
wenn du keine Lücken willst, muss du für das Einfügen eine eigene Zeilenvariable mitführen, die nur dann erhöht wird, wenn die bedingung erfüllt ist:
Sub x()
 
  Dim i As Long
  Dim x as  long
 
 x = 2
     For i = 2 To LetzteZeile
     
         If Sheets("Test").Cells(i, 5) = "1" Then 
              Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy
              Sheets("Test").Cells(x, 10).PasteSpecial xlPasteValues
              x = x + 1
        end if
     Next i
 
 End Sub
Gruß Daniel
Anzeige
AW: Werte untereinander kopieren
13.02.2023 15:25:55
GerdL
Hallo Chris
Sub x()
 
    Dim i As Long, j As Long
    Dim letzteZeile As Long
    
    letzteZeile = 10
    j = 2
 
       
    For i = 2 To letzteZeile
    
        If Sheets("Test").Cells(i, 5) = 1 Then
            Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy
            Sheets("Test").Cells(j, 10).PasteSpecial xlPasteValues
            j = j + 1
        End If
    Next i
    Application.CutCopyMode = False
End Sub
Gruß Gerd
AW: Werte untereinander kopieren
13.02.2023 15:46:18
Chris
Hi Daniel,
danke für den Hinweis, funktioniert.
Also alles was zum IF Block gehören soll, unter dem If-Block!
Gruß
Chris
Anzeige
AW: Werte untereinander kopieren
13.02.2023 15:53:34
Daniel
Hi
genau.
nach dem THEN in der selben Zeile weiterschreiben macht man eigentlich nur, wenn es es ein einziger Befehl ist der ausgeführt werden soll und es keinen ELSE-Teil gibt.
Es ist zwar prinzipell möglich, wird aber unübersichtlich weil man dann alle weiteren Befehle in diese Zeile schreiben muss.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige