In meinem Praktikum ist es jetzt erforderlich ein Makro für Excel zu schreiben. Das hab ich auch schon fertig, nur braucht es extrem Lange um zum Ergebnis zu kommen, Ich möchte den Code also noch ein bißchen verfeinern, hab jetzt aber nicht die Zeit VBA grundlegend zu lernen. Ich hoffe ihr Seid so nett und helft mir bei meinen Fragen.
Szenario 1: Vorhandene Sheets : Kreuztabelle; Ergebnis; Ergebnis2
Ich habe eine Kreuztabelle 100x5000.
In der ersten Zeile stehen "Sorten" in der ersten Spalte "Formate"
so kann nun der kombination Sorte x Format eine Artikelnummer zugewiesen werden.
gibt es eine Kombination sorte x Format nicht, ist die entsprechende Zelle der Kreuztabelle leer.
Da die meisten Sorten jedoch nur wenige Formate haben, möchte ich die Tabelle umschreiben und zwar wie folgt:
For spalt = 1 To 100
count = 1
For reihe2 = 1 To 5000
If Worksheets("Kreuztabelle").Cells(reihe2, spalt + 1) ""
Then Worksheets("Ausgabe").Cells(count, spalt).Value =
Worksheets("Kreuztabelle").Cells(reihe2, 1)
Worksheets("Ausgabe2").Cells(count, spalt).Value =
Worksheets("Kreuztabelle").Cells(reihe2, spalt + 1)
count = count + 1
End If
Next reihe2
Next spalt
So der Code funktioniert auch, nur wird jede Zelle einzeln beschrieben. ich möchte das ganze wie folgt abändern.=> erzeuge Variable der Dimension "Kreuztabelle" und speichere die Werte aus Worksheet("kreuztabelle")
Dim rngCell
rngCell = Worksheets("Kreuztabelle").Range("A1:cv5000")
Frage 1: Wie kann ich die Range von der Tatsächlichen Range abhängig machen? Ich habe hier einfach A1:cv5000 gewählt, weil der bereich abgedeckt wird, ich würde das aber gerne dynamisch machen.
Frage 2:
mit Worksheets("Ausgabe").Cells(count, spalt).Value greife ich auf den wert in Spalte "spalt" und Reihe "count" vom worksheet zu. Ich möchte nun genauso auf der Variablen rngCell arbeiten.
Also z.b. Den Wert aus rngCell.cells(5,1) aufrufen.
Mein Ziel ist es die werte erst im Arbeitsspeicher in rngCell zu speichern um dann nur einen einzigen schreibvorgang in das Excel sheet zu haben.
So würde das ganze viel schneller gehen denke ich.
Also Ich möchte z.B. aus:
From A Form B Form C
Format 5 11124 11120
Format 6 11125
Format 8 11129
Format 9 11130
2 Tabellen machen die so aussehen:
From A Form B Form C
Format 5 Format 9 Format 5
Format 6 Format 8
From A Form B Form C
11124 11130 11120
11125 11129
nur möchte ich das alles im Arbeitsspeicher von statten gehtEs wäre cool, wenn mir jemand den code geben könnte,
a) eine variable als Array mit den Werten eines gegebenen WOrkssheets "dynamisch zu erstellen"
und
b) auf dieser Variable zu navigieren (also die equivalenten befehle zu range und cells) angeben könnte.
MFG Patrick