(09.11.2015, 16:20)Rabe schrieb: hier nochmal umgestellt, nur wenn in Spalte A Zeile "Zähler" EMEA steht, wird das Array befüllt, in allen anderen Fällen kommt: "wir sind fertig" :
und hier eine nochmal gekürzte Variante:
OptionExplicitSub summieren()
Dim Zähler AsIntegerDim Summe AsIntegerDim x AsIntegerDim Products(3) AsStringDim Product AsStringDim Arrayzähler AsIntegerDim i AsLongDim Gefunden AsBoolean
Zähler = 1Do'Gefunden = False ' Arrayzähler = -1 If Cells(Zähler, 1).Value = "EMEA"Then
x = Cells(Zähler, 2).Value
Summe = Summe + x
Product = Cells(Zähler, 3).Value
For i = 0ToUbound(Products)
If Products(i) = Product Then
Gefunden = TrueExitForElse
Gefunden = FalseExitForEndIfNext i
If Gefunden = FalseThenFor Arrayzähler = 0To3If Products(Arrayzähler) = ""Then
Products(Arrayzähler) = Product
Cells(24, 5 + Arrayzähler).Value = Product
EndIfNext Arrayzähler
Zähler = Zähler + 1EndIfElse' If Cells(Zähler, 1).Value = 0 Then
Cells(26, 1) = "Wir sind fertig"ExitDoEndIfLoop
Cells(24, 2).Value = Summe
EndSub
09.11.2015, 16:36 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2015, 16:39 von Bärenmarke.)
Vielen Dank Ralf, an dem Next lag es
Das hab ich irgendwie nicht gewusst, dass ich damit die for Schleife schließen muss :(
Jetzt läuft es, jedoch hab ich wohl noch einen Logikfehler verbaut und er spuckt mir immer A heraus.....
Dein Quellcode führt dazu, dass Excel abstürzt, von daher weiß ich nicht ob ich es schon vereinfachen kann. Aber ich schreib am besten mal, was ich eig machen möchte. Edit: Hatte nen C&P Fehler, abstürzen tut es nicht mehr, aber funktionieren tut es auch nicht.
Ich hab eine Excelliste mit mehreren Tausend Einträgen und da möchte ich mir die Produkte dazu anzeigen lassen. Sprich ich möchte dann nach EMEA_Central suchen und mir die 5-6 verschiedenen Produktgruppen anzeigen lassen. Daher dachte ich mir ist es vielleicht das beste, wenn ich das ganze in ein Array speichere und davor immer kontrolliere ob der Wert schon im array ist und wenn nicht dann soll er ihn dazuschreiben.
Um es mal auszuprobieren habe ich mir eine kleine Exceltabelle gemacht, wo in Spalte A immer abwechselnd EMEA und APAC drin steht, in Spalte B hab ich einfach Zahlen von 1-20 genommen und in Spalte C die Produkte die ich A,B,C genannt habe (auch immer abwechselnd).
Zum Schluß hätte ich dann gerne die Angabe Produkt A,B, C. Wenn ich aktuell das Array auslese habe ich aber viermal A :19:
Bin mit VBA leider nicht so vertraut und hatte mir daher erstmal überlegt wie ich es machen könnte und mir das entsprechende zusammen gegoogelt.
Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0
ich verstehe nur nicht, wozu da eine For i-Schleife benötigt wird, es wird in jedem Fall während i = 0 abgebrochen. Egal, ob Products(i) <> Product oder Products(i) = Product, es wird immer mit "Exit For" die Schleife verlassen, das heißt, es kommt gar nicht zu i = 1. Egal, was in "Gefunden" steht! Wenn Du diese Variable später nicht brauchst, kannst Du sie auch weglassen.
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28 • Bärenmarke
09.11.2015, 16:48 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2015, 17:05 von Rabe.)
Hi,
(09.11.2015, 16:36)Bärenmarke schrieb: Vielen Dank Ralf, an dem Next lag es
Das hab ich irgendwie nicht gewusst, dass ich damit die for Schleife schließen muss :(
Jetzt läuft es, jedoch hab ich wohl noch einen Logikfehler verbaut und er spuckt mir immer A heraus.....
Welche Variante hast Du nun getestet? Bringen alle den A-Fehler?
spätestens jetzt wäre es geschickt, wenn Du Deine kleine Beispieldatei mal zur Verfügung stellst.
Also stelle bitte (D)eine (Beispiel-)Tabelle als Excel-Datei zur Verfügung oder stelle die relevanten Ausschnitte hier dar, siehe die als Wichtige Themen: markierten Forums-Beiträge. Die farbigen Texte sind anklickbare Links:
Eine Bitte: Anstatt Screenshots ist eine Datei oder ein Ausschnitt besser! "Du gehst ja auch nicht in die Werkstatt und gibst ein Foto Deines kaputten Autos ab!"
(09.11.2015, 16:38)Rabe schrieb: ich verstehe nur nicht, wozu da eine For i-Schleife benötigt wird, es wird in jedem Fall während i = 0 abgebrochen. Egal, ob Products(i) <> Product oder Products(i) = Product, es wird immer mit "Exit For" die Schleife verlassen, das heißt, es kommt gar nicht zu i = 1. Egal, was in "Gefunden" steht! Wenn Du diese Variable später nicht brauchst, kannst Du sie auch weglassen.
Der code funktioniert leider nicht. Ich hab gegoogelt wie ich ein Array auslesen kann und bin dabei auf dieses Beispiel gestoßen. Also ich möchte einfach schaun, ob der Wert schon in dem array steht und wenn nicht möchte ich ihn hineinschreiben
09.11.2015, 17:09 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2015, 17:15 von Rabe.)
Hi,
(09.11.2015, 17:05)Bärenmarke schrieb: Und wenn ich da dann meinen code ausgraue und deinen einfüge, spuckt er mir kein Ergebnis aus.
ja, das mit dem Fehler (Eintrag 0) durch den letzten Code habe ich schon gesehen.
Ich muß jetzt weg und kann erst morgen weitermachen, aber vielleicht kann sich jemand anders in der Zwischenzeit drum kümmern, wenn Dir die Pivot-Tabelle nicht weiterhilft.
09.11.2015, 17:15 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2015, 17:59 von Bärenmarke.)
Vielen Dank dir schonmal, hast mir sehr geholfen!
Die Pivot reicht mir leider nicht ganz aus, da ich das mir so vorgestellt habe:
Ich füge später noch einen Button ein, indem man seine Region eintragen kann und dann erscheinen nur die Daten aus der eigenen Region, dazu gibt es dann noch seperat Diagramme usw. also es kommt später noch einiges hinterher.
Aber ich versuche es mal weiter, vielleicht bekomme ich es heute ja noch selber gelöst Hab ja noch 2 Stunden Zeit heute :21:
Edit: Ich denke wenn du mir mit dem Array helfen könntest, wäre mir schon sehr geholfen. Ich habe mal versucht das zweite Anwendungsbeispiel hier zu implementieren, jedoch erfolglos :( http://www.vbarchiv.net/tipps/tipp_1650-...anden.html Das mit dem Redim führt zu Problemen wieso auch immer :(