Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

kurze Zwischenfrage: for

kurze Zwischenfrage: for
27.04.2006 10:36:34
Jonathan
Hey,
ganz kurz:
Ich habe eine Schleife:
For i = 1 to 5
....
dbltest = dbltest + x
....
next i
Jetzt soll dbltest durchnummeriert werden, gemäß Anzahl der Durchläufe. Also dass ich nacher auf dbltest1, dbltest2, usw zugreifen kann.
Ich hatte es mit
For i = 1 to 5
....
dbltest & i = dbltest & i + x
....
next i
versucht, aber....
Jonathan

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kurze Zwischenfrage: for
27.04.2006 10:43:58
ede
hallo,
so geht das nicht, mach es über ein array
for i=1 to 5
myarray(i)="dbltest" & i
next i
gruss
AW: kurze Zwischenfrage: for
27.04.2006 10:48:28
Jonathan
Hey,
kleine Änderung:
Anzahl der Durchläufe ist variabel:
For j = 1 To ActiveCell.Column - 1
Dim ausgaben(ActiveCell.Column - 1)
Das klappt aber nicht, muss ein "konstanter Ausdruck sein"!
AW: kurze Zwischenfrage: for
27.04.2006 10:52:12
ede
hallo nochmal,
dim array()
anzahl=ActiveCell.Column - 1
redim array(anzahl)
for j=1 to anzahl
...
next j
gruss
AW: kurze Zwischenfrage: for
27.04.2006 10:57:31
Jonathan
Hey,
danke!
Aber eins verstehe ich nicht: jetzt kann ich nicht mehr mit:
For l = 1 To monate
If dblausgaben(l) "" Then
MsgBox "Monat " & l & " " & dblausgaben(l)
End If
Next
auf die Daten zugreifen, dies ging vorher!
Anzeige
AW: kurze Zwischenfrage: for
27.04.2006 11:02:59
ede
sieht alles richtig aus, was geht nicht?
stell mal ein beispiel ab.
gruss
oder meinst du es so
27.04.2006 11:07:46
ede
For l = 1 To monate 'für jeden moant
for x=1 to anzahl ' für jede ausgabe
If dblausgaben(x) "" Then
MsgBox "Monat " & l & " " & dblausgaben(x)
End If
next x
Next
AW: kurze Zwischenfrage: for
27.04.2006 11:20:59
Jonathan
Hey,
ich habe jetzt folgenden Code

Sub Test()
'Arrays bestimmen
Dim arrKonten(7)
Dim arrAusgaben(12)
'Konten einlesen
For g = 1 To 7
arrKonten(g) = DATEN.Cells(g * 3 + 1, 6)
Next g
' Konten abarbeiten
For h = 1 To 7
If arrKonten(h) <> "" Then
'alle Buchungen
For i = 2 To buchungen
'für alle Monate
For j = 1 To monate
If Month(DATENBANK.Cells(i, 5)) = j Then
If DATENBANK.Cells(i, 2) = "Ausgaben" And _
DATENBANK.Cells(i, 11) = PLANER.Cells(2, 7) And _
DATENBANK.Cells(i, 8) = "Jonathan" Then
arrAusgaben(j) = arrAusgaben(j) + DATENBANK.Cells(i, 6).Value
End If
End If
Next j
Next i
End If
Next h
End Sub

Ob dieser so funktioniert (also das richtige Ergebnis liefert), kann ich noch nicht sagen, da das Array arrAusgaben erweitert werden müsste, um den jweiliegen Wert von h.
Dass es also für alle 7 Konten (sofern eingegeben) das Array arrAusgaben gibt.
Zugreifen möchte ich dann nachher z.B. so:
arrAusgaben(Kontox)(Monat)
Mal sehen, ob ich (wir) das alles so hinbekommen!
Jonathan
Anzeige
AW: kurze Zwischenfrage: for
27.04.2006 11:43:40
ede
es ist immer schwer, wenn man keine daten dazu hat zum testen.
wenn ich dich aber richtig verstanden habe, dann willst du aus vorhandenen buchungen
summen je monat je konto ermitteln, wobei mir in den buchungen die prüfung aufs konto fehlt!

Sub test1()
'Variable definieren
Dim arrGesamt(7, 12)    'Konto,Monat
Dim arrKonten(7)        'auszuwertende Kontonummern
Dim k As Integer
Dim m As Integer
Dim i As Integer
'Konten einlesen
For k = 1 To 7
arrKonten(k) = DATEN.Cells(k * 3 + 1, 6)
Next k
' Konten abarbeiten
For k = 1 To 7
If arrKonten(k) <> "" Then
'alle Buchungen
For i = 2 To buchungen
'monat bestimmen
m = Month(DATENBANK.Cells(i, 5))
If DATENBANK.Cells(i, 2) = "Ausgaben" And _
DATENBANK.Cells(i, 11) = PLANER.Cells(2, 7) And _
DATENBANK.Cells(i, 8) = "Jonathan" Then
arrGesamt(k, m) = arrGesamt(k, m) + DATENBANK.Cells(i, 6).Value
End If
Next i      'nächste Buchung
Next k  ' nächstes konto
'anzeigen
For k = 1 To 7
For m = 1 To 12
Debug.Print arrGesamt(k, m)
Next m
Next k
End Sub

gruss
Anzeige
AW: kurze Zwischenfrage: for
27.04.2006 11:51:26
Jonathan
Hey,
Du hast mich vollkommen richtig verstanden!
Die Buchung auf das Konto habe ich bisher mit dem Namen "Stefanie" übergangen.....
Ich werde dies gleich mal testen, dann melde ich mich wieder!
Dazu aber noch eben eine Frage:
Ich habe jetzt ein Array mit Monatsnamen:
Dim arrMonate As Variant
arrMonate = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
Nun möchte ich eine Zelle prüfen:
For j = 0 To Monate - 1
If Month(DATENBANK.Cells(i, 3)).Value = arrMonate(j) Then
...
Zu der Prüfung gibt er mir aber aus: Typen unverträglich. Das verstehe ich nicht!
Anzeige
AW: kurze Zwischenfrage: for
27.04.2006 11:58:08
ede
es ist ja auch so
Month(DATENBANK.Cells(i, 3)).Value ist eine zahl 1..12
arrMonate(j) ist text Jan...Dez
If Format(Month(DATENBANK.Cells(i, 3)).Value,"mmm") = arrMonate(j) Then
sollte funktionieren
AW: kurze Zwischenfrage: for
27.04.2006 12:48:30
Jonathan
Hey,
So ganz kann ich das nicht nachvollziehen mit arrGesamt.
Zumal ich nun die Monatszahlen durch Text ersetzt habe, es dann also nicht funktioniert!
AErweiterung
27.04.2006 12:57:45
Jonathan
Hey,
im Prinzip muss ich ja in dem Array speichern:
Konto (als Text)
Monat (als Text)
Wert (als Zahl)
arrAusgaben(arrKonten(h), arrMonate(j), wert)
Um dann darauf zugreifen zu können, dass ich Konto und Monat angebe und der Wert angezeigt wird, oder z.B. nur den Monat, dann alle Werte des Monats aller Konten.....
Oder wie würde sowas gehen?
Anzeige
AW: kurze Zwischenfrage: for
27.04.2006 12:59:35
ede
das arrGesamt ist jetz zweidimensional in dieser form
arrGesamt(Konto, Monat)
beispiele:
arrGesamt(1,1) -- Konto1 im Januar
arrGesamt(1,2) -- Konto1 im Februar
arrGesamt(1,3) -- Konto1 im Marz
arrGesamt(1,12) -- Konto1 im Dezember
arrGesamt(2,1) -- Konto2 im Januar
arrGesamt(2,2) -- Konto2 im Februar
arrGesamt(2,3) -- Konto2 im Marz
arrGesamt(2,12) -- Konto2 im Dezember
als Wert steht immer die Summe der 6. Spalte aus DATENBANK
stell mal ein paar werte deiner datenbank bereit, müssen ja mind.11 spalten sein
sowie was in PLANER.Cells(2, 7) steht
gruss
Anzeige
AW: kurze Zwischenfrage: for
27.04.2006 13:06:02
Jonathan
Jetzt habe ich das verstanden!
Klar! Mein Gedankengang war sehr dumm!
Aber wie bekomme ich hier die Texte in das Array statt der Zahlen?
AW: kurze Zwischenfrage: for
27.04.2006 13:12:50
Jonathan
So, jetzt habe ich es, glaube ich, verstanden!!
Im Prinzip brauche ich gar keine Prüfungen, sondern ich lese einfach die ganze Datenbank in das mehrdimensionale Array ein (bei wieviel Daten wird es kritisch?). Dann kann ich nachher alles abfragen, was ich will!
Aber dazu muss ich immer noch ein Text in das Array bekommen!
Danke schon mal für Deine sehr umfangreiche Hilfe!
ich hatte sowas vor Augen
27.04.2006 13:32:45
Jonathan
Meines Erachtens wäre es dann ja nur noch nötig, die DB abzuarbeiten und alles zu speichern:
For i = 2 To buchungen
m = DATENBANK.Cells(i, 4) ' ist der Monat z.B. Januar
k = DATENBANK.Cells(i, 8) ' das konto z.B. Bar
a = DATENBANK.Cells(i, 2) ' die Art z.B. Ausgaben / Einnahmen
j = DATENBANK.Cells(i, 11) ' das Jahr z.B. 2006
arrGesamt(m, k, a, j) = arrGesamt(m, k, a, j) + DATENBANK.Cells(i, 6).Value
Next i 'nächste Buchung
Jetzt würde ich nach bestimmten Werten suchen mit
MsgBox arGesamt(Februar, Bar, Ausgaben, 2006)
Mhhh.....
Anzeige
AW: ich hatte sowas vor Augen
27.04.2006 13:36:52
ede
du kommst deinem ziel schon immer näher,
genau so ist es, habe hier nochmal mir selber ein kleines Datenbankbeispiel aufgebaut!
siehe: https://www.herber.de/bbs/user/33161.xls
gruss
rückantwort wäre super, ob jetzt alles ok.
AW: ich hatte sowas vor Augen
27.04.2006 13:48:49
Jonathan
Hey,
vielen, vielen Dank!
Das klappt super, leider kann ich nicht alles nachvollziehen:
wofür ist diese Zeile gut:
'gesamtsumme
arrGesamt(k, 0) = arrGesamt(k, 0) + Cells(i, 6)
Und wie bekomme ich es nun hin, dass auch für die Konten ein Text verwendet werden kann?
Oh, oh, sorry für die vielen Fragen!
Anzeige
AW: ich hatte sowas vor Augen
27.04.2006 13:56:49
ede
ein array beginnt in der regel mit dem element 0
das heist array(7) hat 8 elemente
array(0)
array(1)
..
array(7)
damit es sich besser liest habe ich auf das erste element im aray verzichtet!
damit es aber nicht umsonst ist, habe ich dann in dieses sie summe für alle monate dieses kontos reingeschrieben! somit hast du auch zwischensummen.
anbei nochmal ein erweitertes beispiel
https://www.herber.de/bbs/user/33163.xls
gruss
danke....
27.04.2006 14:12:18
Jonathan
Dir vielmals!!!
Jetzt kommt genau das raus, was ich möchte! Werde es nun studieren und versuchen zu verstehen!
Thanks
Jonathan
Anzeige
AW: super
27.04.2006 17:26:15
Jonathan
Hey,
jetzt habe ich mich langsam ein bißchen reingefunden, aber eine Sache verstehe ich nicht.
Das Zugreifen auf die Werte des Arrays.
Hier besteht ja nun ein dreidimensionales Array, oder?
Mit der Schleife werden alle Werte, die 0 sind angezeigt.
Wie kann ich denn Einfluss darauf nehmen, welche angezeigt werden? Ich habe es ganz einfach mit
MsgBox arrGesamt(2, Barkasse, 1)
versucht, aber dies scheint ganz offensichtlich falsch zu sein!
Warum?
AW: super
27.04.2006 17:52:16
Jonathan
Auch die Frage hat sich jetzt erledigt!
Mir ist aber noch was aufgefallen:
Es werden beim addieren keine Nachkommastellen berücksichtigt! Da gibt es doch bestimmt nen kleinen Trick?
AW: super
28.04.2006 07:13:36
ede
guten morgen,
das liegt am datentyp integer vom arrGesammt. einfach den datentyp auf einen mit
gleitkomma wechseln.
gruss
AW: super
28.04.2006 13:53:05
Jonathan
Hey,
danke für den Hinweis, und vor allem für die sehr umfangreiche und noch bessere Hilfe!!
Gerne wieder! ;-)
MfG
Jonathan
letzte Frage erl. !!
27.04.2006 11:58:30
Jonathan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige