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

Tabellen als Variablen aufnehmen

Tabellen als Variablen aufnehmen
09.04.2016 17:35:24
Patrick
Hi, ich bin absoluter VBA noob und habe nur Vorkenntnisse in Java.
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 geht
Es 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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen als Variablen aufnehmen
09.04.2016 17:47:28
Patrick
Also falls das absolut nicht vertändlich war,
ich würde gerne ein array erzeugen das die dimension [x;y] hat und würde dann gerne auf Feld
[a,b] zugreifen, wie geht das bitte? ^^

AW: array(x ,y)
10.04.2016 08:48:09
Fennek
Hallo,
Deine Ausgangsfrage ist mir zu komplex.
Ein 2-dimensionales array
Dim ar()
Ar = range("a1:d25")
Msgbox ar(3, 5) 'entspricht cells(3,5)
Aber in den ms-Hilfetexte sollte das auch erklärt sein.
Msg
Ps: die Codes sind aus dem Gedächtnis
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige