Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
hast Du mal die Buchstaben bis F durchgezählt? Ich komme da nicht auf 13.
If .Cells(lRow, 13).Value = "Due" Then
und eine ganze Zeile zu kopieren sind auch nicht nur ein paar Daten
.Rows(lRow).Copy Destination:=Sheets("Maturities").Rows(lN)
Wenn Du nur die Inhalte von A bis I kopieren und ab Spalte A einfügen willst, dann
.Cells(lRow,1).Resize(1,9).Copy Destination:=Sheets("Maturities").Cellss(lN,1)
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 16.10.2020
Version(en): 2016
Ich habe das natürlich jetzt stark vereinfacht und als Beispiel aufgefasst. Da ist es doch klar, dass die Nummern vom Anfang nicht mehr passen.
Kopiert werden sollen nur einzelne Zellen aus einer Reihe und nicht die ganze Zeile.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
hat's denn nun geholfen? Wenn Du etwas vereinfacht beschreibst, sollte es das Ziel immer noch verdeutlichen und nicht verschleiern. Als Antworter sieht man dann nämlich für die Lösung Vereinfachungen, die am Ziel vorbeigehen.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 16.10.2020
Version(en): 2016
10.11.2020, 13:17
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2020, 13:43 von peterpan5.)
Ich habe jetzt mal komplett bei null gestartet anhand des neuen Beispiels:
Sub Maturity()
Dim Tickets As Worksheet ' das Quell-Tabellenblatt - die Herkunft der Daten
Dim Maturities As Worksheet ' das Ziel-Tabellenblatt - die Ausgabe
Dim iRow As Long
Dim i As Long
Dim j As Long
Set Tickets = ThisWorkbook.Worksheets("Tickets")
Set Maturities = ThisWorkbook.Worksheets("Maturities")
For iRow = 2 To Tickets.Cells(Rows.Count, 6).End(xlUp).Row
If Tickets.Range("F" & iRow).Value = "due" Then Maturities.Range("A" & iRow).Value = Tickets.Range("A" & iRow).Value
Next iRow
End Sub
Dies läuft, aber jetzt haben sich neue Fragen ergeben:
1) Wie kann ich weitere Zellen von Tickets nach Maturities kopieren also den THEN Teil erweitern?
2) Wie steuere ich die Zellen in Maturities genau an, so dass es hier keine Leerzellen gibt und alles fein untereinander steht? Momentan steht es an der gleichen Stelle wie im Tab "Tickets"
Die erste Frage habe ich nun selbst gefunden:
Sub Maturity()
Dim Tickets As Worksheet ' das Quell-Tabellenblatt - die Herkunft der Daten
Dim Maturities As Worksheet ' das Ziel-Tabellenblatt - die Ausgabe
Dim iRow As Long
Dim i As Long
Dim j As Long
Set Tickets = ThisWorkbook.Worksheets("Tickets")
Set Maturities = ThisWorkbook.Worksheets("Maturities")
For iRow = 2 To Tickets.Cells(Rows.Count, 6).End(xlUp).Row
If Tickets.Range("F" & iRow).Value = "due" Then
Maturities.Range("A" & iRow).Value = Tickets.Range("A" & iRow).Value
Maturities.Range("B" & iRow).Value = Tickets.Range("C" & iRow).Value
End if
Next iRow
End Sub
Aber für die zweite Frage der Anordnung bräuchte ich eure Hilfe nochmals :)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
1) Da könntest Du bei unzusammenhängenden Bereichen mehrere Schritte nehmen
Code:
If Tickets.Range("F" & iRow).Value = "due" Then
Maturities.Range("A" & iRow).Value = Tickets.Range("A" & iRow).Value
Maturities.Range("X" & iRow).Value = Tickets.Range("B" & iRow).Value
End If
2) Da hattest Du mit dem n schon den richtigen Ansatz. Vor der Schleife setzt Du n auf 1 oder einen anderen Ausgangswert. Dann beim If so weiter:
Code:
If Tickets.Range("F" & iRow).Value = "due" Then
Maturities.Range("A" & n).Value = Tickets.Range("A" & iRow).Value
Maturities.Range("X" & n).Value = Tickets.Range("B" & iRow).Value
n=n+1
End If
Den Startwert von n könntest Du auch wie iRowMax ermitteln, nur dann eben auf dem Blatt Maturities un d1 dazu zählen damit Du die letzte Datenzeile nicht überschreibst.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
in dieser Fassung funktioniert das Makro bei mir einwandfrei. Ich habe aber noch eine Option eingefügt die alten Daten zu löschen.
Wenn das nicht erwünscht ist den mit "##" markierten Teil einfach löschen. Dann werden neue Daten unten angehangen.
mfg ast 123
Code:
Sub Maturity()
Dim Tickets As Worksheet ' das Quell-Tabellenblatt - die Herkunft der Daten
Dim Maturities As Worksheet ' das Ziel-Tabellenblatt - die Ausgabe
Dim iRow As Long
Dim Zeile As Long
Set Tickets = ThisWorkbook.Worksheets("Tickets")
Set Maturities = ThisWorkbook.Worksheets("Maturities")
Zeile = Maturities.Cells(Rows.Count, 1).End(xlUp).Row + 1
'## ggf. Bereich A-C zuerst löschen! Ist das gewünscht??
Maturities.Range("A4:C" & Zeile).ClearContents
Zeile = 4 'Variable auf 1. Zeile setzen
'## oder diesen Teil komplett löschen, dann wird unten angehangen!
For iRow = 2 To Tickets.Cells(Rows.Count, 6).End(xlUp).Row
If Tickets.Range("F" & iRow).Value = "due" Then
Maturities.Range("A" & Zeile).Value = Tickets.Range("A" & iRow).Value
Maturities.Range("B" & Zeile).Value = Tickets.Range("C" & iRow).Value
Maturities.Range("C" & Zeile).Value = Tickets.Range("E" & iRow).Value
Zeile = Zeile + 1
End If
Next iRow
End Sub
Registriert seit: 16.10.2020
Version(en): 2016
Vielen Dank für eure Hilfen!!!! Jetzt läuft es auch bei mir.