Makro in Excel zum Formeln übertragen
Hallo, da ich leider nicht so gut in VBA bin, bitte ich um eure Hilfe!
Ich habe eine Exceltabelle in der ich im ersten Blatt Daten aus einer Datenbank bekomme. Diese Daten lese ich dann durch verschiedene Formeln im zweiten Tabellenblatt aus und muss diese dann einzeln je Spalte nach unten ziehen. Die Werte aus dem ersten Tabellenblatt sind jedoch immer unterschiedlich viele und demnach muss ich die Länge der Zeilen im zweiten Blatt immer anpassen. Nun die Frage, kann man das auch über ein Makro mittels eines Buttons realisieren mit dem ich nicht immer die Daten im zweiten Blatt erst löschen muss und dann immer wieder anpassen muss. Die Formeln sind alle da.
Und nur noch eines, mit einem zweiten Button sollen dann alle Werte aus dem zweiten Tabellenblatt in ein drittes Tabellenblatt übernommen werden und nicht die Formeln.
Ich bitte um eure Hilfe ich komme da einfach nicht weiter!
Vielen Dank schon mal!
Antwort schreiben
Antwort 1 von Saarbauer vom 07.09.2021, 09:22 Options
Hallo,
hast du es schon mit Makro aufzeichnen versucht?
Sonst wäre es nicht schlecht eine Beispieltabelle zur Verfügung zu stellen
Gruß
Helmut
Antwort 2 von nickdeluxe vom 07.09.2021, 09:54 Options
Danke damit komme ich erstmal weiter, so kann ich mir schon mal den Quellcode angeben lassen, jetzt fehlt mir nur noch wie ich die Anzahl der Zeilen herausbekomme und diese dann auslese um dann so lange den Rest zu kopieren.
Antwort 4 von nickdeluxe vom 07.09.2021, 11:41 Options
Danke habe jetzt schon mal die einzelnen Probleme gelöst weiß nur noch nicht wie ich diese zusammenfüge? Ich habe da mal folgendes gepostet:
In einem Makro von einer Tabelle in eine nächste wechseln (4 Hits)
Hallo ich habe folgendes Problem:
Ich habe eine Möglichkeit gefunden mir die Anzahl der Zeilen aus der Tabelle 1 ausgeben zu lassen. Wie folgt:
Option Explicit
Sub AnzahlZeilen()
Dim Anzahl As Long
On Error Resume Next
With ActiveSheet
.Range("A1").Select
Anzahl = .Columns("A").SpecialCells(xlCellTypeFormulas, 23).Count
Anzahl = Anzahl + .Columns("A").SpecialCells(xlCellTypeConstants, 23).Count
End With
MsgBox Anzahl
End Sub
Die MsgBox gibt mir dann den Wert aus nun möchte ich in das Tabellenblatt 3 wechseln und dann soll er folgenden Befehl machen:
Rows("2:2").Select
Selection.Copy
Rows("3:5712").Select
ActiveSheet.Paste
End Sub
Aber hier dann die 5712 mit der ermittelten Anzahl ersetzen!
Wie mache ich das in einem Makro?
Bitte um Hilfe, ich muss es heute noch schaffen!
Vielen Dank schon mal an euch!
Antwort 5 von nickdeluxe vom 07.09.2021, 11:52 Options
Hallo bin gerade noch einen Schritt weiter gekommen durch die Erklärung in dem anderen Post. Es sieht jetzt so aus:
Option Explicit
Sub AnzahlZeilen()
Dim Anzahl As Long
On Error Resume Next
With ActiveSheet
.Range("A1").Select
Anzahl = .Columns("A").SpecialCells(xlCellTypeFormulas, 23).Count
Anzahl = Anzahl + .Columns("A").SpecialCells(xlCellTypeConstants, 23).Count
Sheets("MASTER").Select
Rows("2:2").Select
Selection.Copy
Rows("3:5712").Select
ActiveSheet.Paste
End With
MsgBox Anzahl
End Sub
Nur wie kann ich jetzt den Wert aus der Anzahl in Rows("3:5712").Select einsetzen, wenn ich Anzahl anstatt 5712 schreibe macht er gar nichts mehr! Wie löse ich das Problem?
Danke für die Hilfe!
Antwort 6 von Saarbauer vom 07.09.2021, 12:01 Options
Hallo,
schreibe mal Anstatt
Rows("3:5712").Select
Rows("3:" & Range("A65536").End(xlUp).Row ).Select
Gruß
Helmut
Antwort 7 von nickdeluxe vom 07.09.2021, 12:41 Options
Hallo er kopiert zwar einmal in die nächste Zeile aber leider nicht bis 5712! Gibt es noch eine andere Möglichkeit?
Antwort 8 von Saarbauer vom 07.09.2021, 12:48 Options
Hallo,
da deine Angaben etwas mager sind kann man nur raten wo deine Zeile mit den Daten aus der anderen Tabelle sind, versuch es mal so
Rows("3:5712").Select
Rows("3:" & Anzahl).Select
Gruß
Helmut
Antwort 9 von nickdeluxe vom 07.09.2021, 13:05 Options
Der Wahnsinn das passt :-) super vielen vielen Dank!!!!!!!
Nun nur noch eine Kleinigkeit: Kann ich die überschüssigen Zeilen in der Master Tabelle noch löschen durch einen Befehl? Der schreibt bis zur Anzahl z.B. 5671 und den Rest von vorher bis 5712 sind dann noch die Formeln in denen dann der Wert fehlt! Gibt es da noch eine Möglichkeit das er dann ab der "Anzahl" die Zeilen danach löscht?
Großen Dank
Antwort 10 von Saarbauer vom 07.09.2021, 13:15 Options
hallo,
das Geht, da ich aber nicht weiss wie und wo die Anzahl, hier 5712, ermittelt wird, kann ich dir nicht sagen was du wie löschen musst.
Geht etwa so
Rows("3:" & Anzahl).Delete
Gruß
Helmut
Antwort 11 von nickdeluxe vom 07.09.2021, 14:13 Options
Hallo nun das letzte ding ich habe es jetzt so versucht
Rows(" & Anzahl+1:10000").Select
Selection.ClearContents
größer sollte es wohl nicht werden. Nur leider erkennt excel den Rows Befehl nicht sonderen löscht einfach die letzte Selection wenn ich aber
Rows("5630:7000").Select
Selection.ClearContents
eingebe macht er es! Was mache ich oben falsch?
Bitte um eine letzte Antwort! Danke vielmals!
Antwort 12 von Saarbauer vom 07.09.2021, 14:37 Options
Hallo,
jetzt habe ich verstanden, mach es so
Rows(Anzahl +1 & ":65536 " ).Delete
Gruß
Helmut
Antwort 13 von Saarbauer vom 07.09.2021, 14:38 OptionsLösung
Hallo,
oder
Rows(Anzahl +1 & ":65536 " ).ClearContents
Gruß
Helmut
Antwort 14 von nickdeluxe vom 07.09.2021, 14:57 Options
Super riesen großen Dank jetzt passt es, mit dem Befehl
Rows(Anzahl +1 & ":65536 " ).Delete
hats endgültig gepasst
Vielen Dank für deine Mühen!