PDA

Vollständige Version anzeigen : Anfänger sucht Hilfe, VBA Excel 2010.


COLA2012
23.06.2012, 17:21
Hallo liebe VBA-Kenner,

ich bin leider ein absoluter Anfänger auf dem Gebiet vba. Nichts desto trotz stehe ich vor einer Aufgabe, die mich jetzt zwei Tage internetrecherche und einiges an Nerven gekostet hat. Ich habe 4 spalten die mit unterschiedlichen Datenkombinationen von 0 bis 6 gefüllt sind. In Abhängigkeit dieser Kombinationen soll mir excel in einer weiteren Spalte einen Text ausgeben.

Bsp:
a b c d e
1 2 0 0 Hans
2 3 4 1 Peter
0 0 0 0 Dieter
3 1 0 3 Horst

Ich habe es mit einer schleife und if elseif versucht, allerdings sind das bei mir über 200 kombinationen und da ich jede Zelle einzeln ansteuere, müsste ich jede Kombination als if/elseif wiedergeben. Gibt es eine möglichkeit zeilen zu prüfen in diesen 4 Spalten so dass mir das Makro unterschiedliche texte ausgeben kann, wenn es:

nur Nullen gibt
nur Kombinationen aus Nullen, einsen und zweien (hier soll die 0 Zeile nicht mit einfließen)
nur Kombinationen mit genau einer 3,4 oder 5.
nur Kombinationen mit genau zwei 3,4 oder fünfen
Nur Kombinationen mit genau drei 3,4 oder fünfen gibt.
Wenn in der zweiten spalte eine 3, 4 oder 5 steht soll er einen text ausgeben der die anderen übertrumpft, dass heißt egal ob noch eine 3 woanders steht, steht eine an zweiter stelle soll er einen bestimmten text ausgeben.

Help!!

Bin dankbar für jede Hilfe

Hajo_Zi
23.06.2012, 17:38
Mache es mit Formel. Schreibe in die Spalte =Text(Zeile(),"00000").
Sollte das nicht die Lösung sein, solltest Du vieleleicht schreiben welche Text Du haben möchtest.


<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm" onclick="window.open(this.href);return false"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

COLA2012
23.06.2012, 17:50
Hallo Hajo,

danke für die Antwort, aber ich brauche ein VBA Makro welches die unterschiedlichen Zahlen in den Zeilen als Kombinationen von Zahlen ansieht die wie oben beschrieben unterschiedliche Texte zur Folge haben sollen. Die Nullen wären bisher kein Problem gewesen, weil ich das mit einer einfachen if and and and Zeile lösen kann. Mein Problem ist es vba zu sagen, dass es die Reihen einzeln durchgehen soll und entsprechend meinen Angaben oben den richtigen Text in die nachfolgende Spalte einfügen soll.

Dennoch vielen Dank für die schnelle Reaktion.

LG

COLA2012

Hajo_Zi
23.06.2012, 18:06
Gut, Du möchtest keine Informationen geben. Damit kann ich Leben. Ich habe das Prioblem nicht.

Ich bin dann raus.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

COLA2012
23.06.2012, 18:15
Es tut mir leid Hajo,

aber ind der Beispieltabelle steht doch schon unterschiedliche Texte. Ich verstehe das Problem nicht, Hoffe aber jemand kann mir mit meinem Problem helfen.

Danke schonmal!

Uwe (:o)
23.06.2012, 19:01
Hallo,
ich denke das lässt sich durchaus mit einer Formel erledigen. VBA sollte da nicht nötig sein.
Wenn ich Dich richtig verstehe, könnte diese hier klappen:

=WENN(UND(A1=0;B1=0;C1=0;D1=0);"Dieter";WENN(ODER(B1=3;B1=4;B1=5);"Peter";WENN(ODER(ZÄHLENWENN(A1:D1;3)=3;ZÄHLENWENN(A1:D1;4)=3;ZÄHLENWENN(A1:D1;5)=3);"Klaus";WENN(ODER(ZÄHLENWENN(A1:D1;3)=2;ZÄHLENWENN(A1:D1;4)=2;ZÄHLENWENN(A1:D1;5)=2);"Horst";WENN(ODER(ZÄHLENWENN(A1:D1;3)=1;ZÄHLENWENN(A1:D1;4)=1;ZÄHLENWENN(A1:D1;5)=1);"Hans";"")))))

Ich bin mir allerdings nicht ganz sicher, ob ich Deine Bedingungen richtig verstanden habe, aber vielleicht kannst Du die Formel ja dann selber korrigieren.

COLA2012
23.06.2012, 19:14
Das mit den Formeln ist eine gute Idee und würde wahrscheinlich auch klappen, das Problem ist, das es sich erst um den Anfang eines komplexeren Problems handelt, dass je nach Definition umgeformt werden muss und daher brauche ich es in vba. Ich brauche wirklich die information wie ich es schaffe ganze reihen in vba zu bewerten und dann einen Text auszugeben. Vor allem weil dann noch eine Art Hierarchie mit in das Makro einfließen soll.

Ich wäre wirklich dankbar, wenn ihr mir erklären könntet wie ich vba sage, dass er je nachdem welche Zahlen in meinen Reihen vorkommen einen Text ausgibt. Ich habe es schon mit case und range.select probiert, da geht er jedoch auch immer die einzelnen Zellen durch und mit Case überschreibt er auch noch, dadurch geht aber der Zusammenhang der Kombination flöten.

Bitte vba Hilfe.

PS.: Vielen Dank für deine Hilfe Uwe. Diese Formel wird sicherlich noch vielen anderen Usern von Nutzen sein.

Uwe (:o)
23.06.2012, 19:47
Hallo,
ich denke Case ist hier nicht angebracht, und .select schon mal gar nicht.
Im Prinzip sollte es - wenn ich mit meinem Verständnis Deines Problems richtig lag - über eine Reihe von If-Abfragen klappen, in der Art:
If (Application.WorksheetFunction.CountIf(Range("A1:D1"), 3) = 3 _
Or Application.WorksheetFunction.CountIf(Range("A1:D1"), 4) = 3 _
Or Application.WorksheetFunction.CountIf(Range("A1:D1"), 5) = 3) Then
Range("E1").Value = "Hans"
End If
Und dann ggf. noch Exit Sub.
Falls Dir hier keiner der Fachleute weiterhilft, schaue ich morgen nochmal "rein".

COLA2012
23.06.2012, 20:44
Hi Uwe,

deine Hilfe war schonmal super, je nach einstellungen macht es was ich möchte, jedoch immer nur für eine Zeile. Ich würde das gerne über 1-1000 Zeilen laufen lassen. Habe I eingefügt, aber irgendwie scheint vba das nicht zu mögen, falsche Notation?

Code:


Sub count()

For i = 2 To 21

If (Application.WorksheetFunction.CountIf(Range("B & i", "E & i"), 2) = 1 _
Or Application.WorksheetFunction.CountIf(Range("B & i", "E & i"), 4) = 1 _
Or Application.WorksheetFunction.CountIf(Range("B & i", "E & i"), 5) = 1) Then
Sheets("Sheet1").Cells(i, 6) = "hans"
End If
Next

End Sub

Danke schonmal

LG COLA2012

COLA2012
23.06.2012, 21:30
Habe den fehler schon gefunden, es muss bei range heißen ("B" & i, "E" & i). Dann bastel ich jetzt mal an meinen Bedingungen :)

Ich schreibe wobald ich sagen kann ob jetzt alles funktioniert.

LG und Danke nochmal an Uwe!

COLA2012
23.06.2012, 23:06
Es hat alles geklappt und mein Problem ist gelöst. Sollte jemand das gleiche Problem haben und hier durch Uwes Hilfe nciht weiterkommen, einfach schreiben. :mrcool:

Uwe (:o)
24.06.2012, 10:33
Hallo,
freut mich, dass Du es hinbekommen hast.
Ein kleine Bemerkung noch:
Du solltest Dein Programm sicherheitshalber nicht "count" nennen, weil das in VBA auch ein Funktions-Wort ist und es evtl. zu Problemen kommen könnte.

COLA2012
26.06.2012, 20:20
Wird gemacht :)