Wie bei Excel WENN A1 = NAME1, A2 = NAME2?

6 Antworten

Ich kenne keine Formel für Select case deshalb ein Makro.

Private Sub Worksheet_Change(ByVal Target As Range)

   With Range("C1")

       Select Case Range("A1").Value

           Case 1

               .Value = "Paul"

           Case 2

               .Value = "Klaus"

       End Select

   End With

End Sub


Brainchild  01.02.2018, 09:33

PS: Statt "B1" sollte "C1" stehen.

0
augsburgchris  01.02.2018, 10:05

Wie wäre es mit =WAHL()? oder in dem Fall von nur 2 Sätzen eine WENN?

2
Brainchild  01.02.2018, 10:09
@augsburgchris

Ich habe in der Formelsammlung von Excel nachgeschaut, aber WAHL() leider nicht gefunden/übersehen. Poste doch deine Antwort. Für Anfänger ist WAHL() einfacher da man keine Makros braucht und das Sheet nicht als Excel Datei mit Makros abspeichern muß..

0
augsburgchris  01.02.2018, 10:13
@Brainchild

Man sollte generell auf Makros verzichten sofern es geht. Besonders dann wenn Excel die Bordmittel schon mitgibt. Es geht unheimlich auf die Perfomance gerade bei deinem Sub, da dieses bei jeder Änderung der Markierung ausgeführt wird und damit auch eine Neuberechnung nach sich zieht. Wenn dann solltest du zumindestens hier ein Target festlegen.

1

=WAHL(A1;"Name1";"Name2";"Name3";"Name4";"Name5";"Name6";"Name7";"Name8";"Name9";"Name10";"Name11";"Name12";"Name13";"Name14";"Name15";"Name16")

rückwärts, wenn der Name drinsteht und Du die Position in der geschriebenen Liste haben willst:

=Vergleich(A1;{"Name1";"Name2";"Name3";"Name4";"Name5";"Name6";"Name7";"Name8";"Name9";"Name10";"Name11";"Name12";"Name13";"Name14";"Name15";"Name16"};0)

das letzte Argument ;0 ist hier optional, ich empfehle es aber, denn bei falsch geschriebenem Namen könnte sonst fälchlicherweise die letzte Position wiedergegeben werden (ab Namf1 und größer), ohne dass Du es merkst! Ansonsten kommt mit ;0) bei Fehlern #NV)

Beachte: WAHL mit einfacher Auflistung, Vergleich mit {Matrix-Klammern} (und über index({...};A1) ginge Dein obiges Problem auch noch.)

Habe es jetzt so gemacht

=WENN(A1=1;"Name1";WENN(A1=2;"Name2";WENN(A1=3;"Name3";WENN(A1=4;"Name4";WENN(A1=5;"Name5";WENN(A1=6;"Name6";WENN(A1=7;"Name7";WENN(A1=8;"Name8";WENN(A1=9;"Name9";WENN(A1=10;"Name10";WENN(A1=11;"Name11";WENN(A1=12;"Name12";WENN(A1=13;"Name13";WENN(A1=14;"Name14";WENN(A1=15;"Name15";WENN(A1=16;"Name16"))))))))))))))))


augsburgchris  01.02.2018, 10:09

OK. Warum einfach, wenns auch kompliziert geht? *ggg*

2
gfntom  01.02.2018, 10:15

Das ist die "brutale" Methode. ;)

Sieh dir die Methode von @augsburgchris oder mir an.

1

In C1:

=INDEX({"Name1";"Name2";"Name3";"Name4";"Name5";"Name6";"Name7";"Name8";"Name9";"Name10";"Name11";"Name12";"Name13";"Name14";"Name15";"Name16"};A1)

Statt die Werte in den geschwungenen Klammern {} anzugeben, kannst du auch einen Bereich angeben, in denen die Namen stehen, zum Beispiel:

=INDEX(A2:A17;A1)

iin dem Beispiel stehen deine Namen in den Zellen A2-A17

A1: deine Zahl

C1: =WAHL(A1;"Paul";"Klaus";"Herbert";"Jan";"Michael";...)

Wenn du die Namen in Zellbereich schreibst schreibst zum Beispiel F1:F16

Dann in C1: =WAHL(A1;F1:F16)


gfntom  01.02.2018, 10:19

Danke! Das finde ich noch eleganter als "mein" INDEX....

0
augsburgchris  01.02.2018, 10:25
@gfntom

Bis auf die Tatsache, dass du dir das Array sparst ist hier kein Unterschied. Und wenn man ohnehin Bereiche benutzt ist WAHL nicht mal länger.

0