Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tracking-Analyse
#31
Hmm, also es ist ja so, dass die Werte aus den anderen Spalten unten in den Spalten B C und D angehangen werden. Diese haben, dann keine Werte mehr in Spalte A. Mein Ziel war es jetzt, alle Werte, die dann einen Zahlenwert in Spalte A haben zu löschen, damit die angefügten Daten bei Zeile 3 beginnen (ohne einen Wert in A), aber irgendwie haut das mit dem Code den ich da habe nicht so hin. Er löscht merkwürdigerweise auch die Zeilen, wo A keinen Inhalt hat (auch nachdem ich die Leerzeichen manuell gelöscht habe). Oder habe ich jetzt einfach einen Denkfehler? Undecided
Antworten Top
#32
Hallöchen,

hätt' ich mal Diene Code bis zu Ende gescrollt und gelesen Sad

Also, wie ich schon sagte, ist Deine Schleife korrekt. Allerdings kommt da noch was entscheidendes. Nachdem Du in der Schleife schon mal die kompletten Zeilen geleert hast, wo in Spalte A was steht, tust Du am Ende nochmal alle Zeilen löschen, wo in Spalte A nichts steht. Letzte_Zeile vom benutzten Bereich ist nun nämlich die letzte Zeile von den kopierten Daten. Da wären dann eben die gerade kopierten Daten betroffen :20: Die letzte Zeile brauchst Du also nicht bzw. eigentlich willst Du ja was anderes - die Zeilen löschen.

Jetzt zur Optimierung. Du löschst die Inhalte zeilenweise. Im Prinzip geht es so schneller:

Code:
Sub test()
Dim b& 'Long
b = 4 'bzw Code für letzte_zeile ...
Rows("3:" & b).ClearContents
End Sub

bzw. was Du eigentlich willst, wäre
statt
Rows(3:" & b).ClearContents
gleich
Rows("3:" & b).EntireRow.Delete
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#33
Wie sagt man so schön: Warum einfach, wenns auch kompliziert geht? Blush  Okay vielen Dank, habe jetzt deinen Code entsprechend abgeändert und jetzt klappt es auch.

Wenn ich jetzt noch zum Schluss die Spalte A durchnummerieren möchte, habe ich folgenden Code überlegt bzw. vom Makro-Recorder erstellen lassen:
Code:
Sub Nummerierung()

Range("A3").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("A3").Select
Selection.AutoFill Destination:=Range("A3:A65536"), Type:=xlFillDefault
Range("A2:A65536").Select
End Sub


Jetzt müsste man wahrscheinlich wieder eine Variable deklarieren, damit Autofill dynamisch bzw. variabel die Zeilen ausfüllt oder?
Antworten Top
#34
Hallöchen,

ja, so könnte man es machen. Ich würde die Zeilennummer vom Ende der Spalte B nehmen.

Beim Ausfüllen hast Du vermutlich A1 und A2 ausgefüllt und dann mit einem Doppelklick auf die rechte untere Ecke von A2 bis unten ausgefüllt.

Es gibt aber noch eine andere Möglichkeit, mit der Reihe. Die Findest Du im Start-Ribbon ziemlich weit rechts, wo auch die Sume ist.
Aufgezeichnet würde das erst mal so aussehen:

Code:
Sub Makro2()
'
' Makro2 Makro
'

'
    Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
        Step:=1, Stop:=7, Trend:=False
End Sub

Weil ich gerade in A1 war, ist da keine Zellauswahl und weil ich in 7 Zeilen Daten habe, steht selbige dort.

Für Deine Aufgabe würde es so passen:

Sub Makro2()
    Range("A1").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
        Step:=1, Stop:=Cells(Rows.Count, 2).End(xlUp).Row, Trend:=False
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#35
Photo 
Hallöchen,

ich habe gerade noch mal das Zeilenloeschen-Makro ausprobiert, nachdem ich die Werte mit dem anderen Makro runterkopiert habe. Irgendwie scheint das doch nicht zu klappen. Ich hatte das vorhin nur mit einer selbstgebastelten Tabelle ausprobiert und da gabs keine Probleme, bei der irgendwie schon. Ich hänge die Tabelle mit der ich es probiert habe mal an. Zu der Nummerierung: Habe das erstmal mit einer Beispieltabelle ausprobiert, wo ich nur Werte in die B-Spalte geschrieben habe, aber da wird dann leider gar nichts ausgefüllt :(

Hier nochmal mein Code, den ich für das Zeilen löschen verwendet habe:
Code:
Sub Zeilenloeschen2()
Dim b& 'Long
b = ActiveSheet.UsedRange.Rows.Count
Rows("3:" & b).EntireRow.Delete
End Sub

Kann dir gar nicht genug für deine Hilfe danken!


Angehängte Dateien
.xlsx   Zeilen_loeschen.xlsx (Größe: 1.008,45 KB / Downloads: 2)
Antworten Top
#36
Hallöchen,

sorry, Du ermittelst die letzte Zeile ja etwas anders.
ActiveSheet.UsedRange.Rows.Count

Hätte ich mal noch vollständig posten sollen. Ich schrieb weiter oben:
Zitat:Letzte_Zeile vom benutzten Bereich ist nun nämlich die letzte Zeile von den kopierten Daten. Da wären dann eben die gerade kopierten Daten betroffen

Der Code für die letzte Zeile ermittelt sich jedoch aus dem letzten Eintrag in Spalte A und nicht aus dem kompletten benutzten Bereich.
Bei den Zahleneinträgen in Spalte A hatte ich im Code z.B. folgendes drin:
Cells(Rows.Count, 2).End(xlUp).Row
Damit gehe ich in Spalte B von ganz unten her ans Ende der Einträge. Diese Zeile muss dann nicht mit der letzten Zeile im benutzten Bereich übereinstimmen.

Du benötigst zum Löschen die letzte benutzte Zelle in SPalte A, also
Cells(Rows.Count, 1).End(xlUp).Row
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • lpterritory
Antworten Top
#37
Yesss, es funktioniert jetzt :)
 
Die Nummerierung funktioniert noch nicht so wirklich, also Spalte A bleibt irgendwie komplett leer (also ab Zeile 3), wäre jetzt aber auch nicht so wichtig, wenn das  zu viele Umstände macht, mir zu erklären, was ich verändern müsste.

Ohne dich wäre ich auf jeden Fall komplett aufgeschmissen gewesen!
Antworten Top
#38
Hallöchen,

auch kein Problem. Ich bin davon ausgegangen, dass in A1 schon eine 1 steht.
Also einfach noch Range("A1").Value = 1 drüber setzen, dann sollte es passen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#39
Ahh okay verstehe jetzt ist es fast perfekt. Also in Zeile 1 und 2 sind Text und ab Zeile A3 soll dann die fortlaufende Nummerierung beginnen mit 1 usw. dann.

Folgenden Code habe ich dafür benutzt:


Code:
Sub Nummerieren()
   Range("A3").Value = 1
   Range("A3").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
       Step:=1, Stop:=Cells(Rows.Count, 2).End(xlUp).Row, Trend:=False
End Sub

Es werden aber noch 2 weitere Zeilen nach Ende der Daten nummeriert. Das liegt wahrscheinlich daran, weil A1 und A2 nicht beachtet werden oder?
Antworten Top
#40
Hallöchen,

ja, da ziehst Du einfach 2 ab.
... Stop:=Cells(Rows.Count, 2).End(xlUp).Row - 2, ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • lpterritory
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste