# Excel - Wenn-Dann-Funktion für zielgruppenspezifisches Formular



## nintje (31. Januar 2010)

hallo,
vielleicht kann mir hier jemand von den "cracks"  helfen?

ich möchte folgendes machen:
für einen fragebogen sollen die fragen ziegruppenspezifisch in excel auftauchen. 

als beispiel: ich will eine fragebogen machen für männer und frauen. einige fragen werden beiden gruppen gestellt, einige nur männern und einige nur frauen.

nun möchte ich, dass durch einen klick der fragebogen sich automatisch anpasst, das heißt, ich gebe excel die info: befragter ist mann (z.B. zelle a1=1). dann soll excel auf dem nächten tabellenblatt nur die fragen 1 3 und 7 anzeigen (und auch ausdrucken).
ich hab mir gedacht, dass das mit einer wenn, dann funktion gehen müsste. gibt es einen befehl mit dem die  wenn-dann-funktion vorher definierte zellbereiche (zeilen)  einblendet, die nicht ausgewählten aber ausgeblendet lässt? dann würde ich auf dem 2. blatt den kompletten fragebogen mit allen fragen schick formatieren und auf klick blendet excel aber nur die gewünschten fragen ein.

denn wenn ich einen kompletten fragebogen über jede einzelne Zelle mit wenn/dann eingeben muss, dann werd ich irre *gg*

was meint ihr: geht das? kann mir jemand helfen?


----------



## tombe (31. Januar 2010)

Also wenn du die Fragen und die eigentlichen Fragebögen auf mehrere Tabellen aufteiltst, könntest du bei den Fragen in einer zusätzlichen Spalte den Wert 0 für Männer und Frauen, den Wert 1 nur für Frauen und den Wert -1 nur für Männer eingeben.

In der Tabelle für die Frauen holst du dir alle Angaben aus der "Fragen Tabelle" und machst einen Filter auf alle Fragen die größer oder gleich 0 und in der Tabelle für die Männer machst du einen Filter auf alles mit Werten kleiner gleich 0.

Ist schwer zu beschreiben deshalb hänge ich mal ein Beispiel dran.

Gruß Thomas


----------



## nintje (31. Januar 2010)

hallo tombe,
vielen dank für den tipp! das werde ich auf jeden fall auch mal ausprobieren.
ich würde aber dennoch gerne wissen, ob es eine formel gibt, die bewirkt, dass bestimmte zellen in einem arbeiotsblatt eingeblendet werden


----------



## tombe (31. Januar 2010)

Du kannst es auch so machen (0 für beide, -1 für die Männer und 1 für die Frauen):

Tabelle1
A     B
0     Frage 1
1     Frage 2
-1    Frage 3
0     Frage 4
1     Frage 5

Tabelle2 (für die Männer)
=WENN(Tabelle1!$A1<=0; Tabelle1!$B1; "")
=WENN(Tabelle1!$A2<=0; Tabelle1!$B2; "")
=WENN(Tabelle1!$A3<=0; Tabelle1!$B3; "")

Tabelle3 (für die Frauen)
=WENN(Tabelle1!$A1>=0; Tabelle1!$B1; "")
=WENN(Tabelle1!$A2>=0; Tabelle1!$B2; "")
=WENN(Tabelle1!$A3>=0; Tabelle1!$B3; "")

Es bleiben dann halt in den Tebellen 2 und 3 immer wieder Zeilen leer wenn eine Frage nicht das passende Geschlecht betrifft.


----------



## tombe (2. Februar 2010)

Hi nintje,

mir ist dein Problem nicht aus dem Kopf gegangen und ich habe deshalb noch ein bisschen experimentiert.

Da mir keine fertige Excel Funktion einfällt, die das kann was du brauchst, habe ich eine eigene Funktion erstellt:


```
Public Function frage(geschlecht As String)
'Zeilenzähler und Geschlecht muss statisch gespeichert werden da Funktion mehrmals aufgerufen wird
Static zeile%
Static ges As String

'Prüft ob sich das Geschlecht seit dem letzten Auftruf geändert hat und setzt den Zeilenzähler auf Anfangswert
If ges <> geschlecht Then
    zeile% = 1
    ges = geschlecht
End If

'Falls Zeilenzähler den Wert 0 oder noch keinen Wert hat
If zeile% = 0 Then zeile% = 1

'Rückgabewert belegen falls kein Treffer
frage = ""

'Fragen ermitteln
Do While Tabelle1.Cells(zeile%, 2) <> ""
    If geschlecht = "Frau" And (Tabelle1.Cells(zeile%, 1) = 0 Or Tabelle1.Cells(zeile%, 1) = 1) Then
        frage = Tabelle1.Cells(zeile%, 2)
        zeile% = zeile% + 1
        Exit Do
    ElseIf geschlecht = "Mann" And (Tabelle1.Cells(zeile%, 1) = 0 Or Tabelle1.Cells(zeile%, 1) = -1) Then
        frage = Tabelle1.Cells(zeile%, 2)
        zeile% = zeile% + 1
        Exit Do
    ElseIf geschlecht = "Alle" Then
        frage = Tabelle1.Cells(zeile%, 2)
        zeile% = zeile% + 1
        Exit Do
    End If
    zeile% = zeile% + 1
Loop
End Function
```

Die Excel Datei enthält jetzt die "Tabelle 1" in der alle Fragen zusammen mit dem Kennzeichen ob es Mann (-1), Frau (1) oder beide (0) betrifft. In "Tabelle 4" ist in Zelle "A1" eine Auswahlliste wo man aussuchen kann welche Fragen angezeigt werden sollen und in den Zellen "A7" bis "A31" ist die obige Funktion enthalten. Die Auswahlliste holt ihre Einträge aus den Zeilen/Zellen "A2" bis "A4", diese sind ausgeblendet.

Hoffe mal das du dein Vorhaben lösen kannst.

Gruß Thomas

P.S. Bei der Excel Datei (Fragenbogen.xls) habe ich nur an die Endung noch ".TXT" drangehängt damit ich sie übertragen kann!!


----------



## chmee (2. Februar 2010)

Das letzte Beispiel hab ich mir jetzt nicht angeschaut, aber die Sache ist doch einfacher als man es sich denken kann.

Gegeben sei Tabelle 1, wo drinsteht

Frage-ID | FilteringData | Frage

01 | MW | Wie heisst Du?
02 | M | Welches war Dein erstes Auto?
03 | W | Welche Farbe hatte Dein erstes Kleid?

So, nun brauchst Du nur noch sequentiell abzufragen, ob M oder W in der Spalte FilteringData steht. Das lässt sich beliebig verändern und erweitern. Laß das mit mehreren Tabellen weg, unnötig.

Ah, ich sehe, die letzte Antwort zielt auf das Gleiche hinaus, nur hat meine Idee einen Vorteil. Stell Dir vor, Du filterst die Frage nach erweiterten Einschränkungen. Beispiel:

Bist Du Frau/Mann? Bist Du Mutter/Tochter bzw Vater/Sohn?
Schon müsstest Du 4 Nummern nehmen und für Kombinationen (Frage an alle Frauen) müsstest Du eine weitere Nummer 5 hinzufügen, während in meiner FilteringData lediglich nach M oder T zu schauen wäre, was nebenbei auch besser zu lesen ist als eine nummerische Listenkombination.. Weiterhin wäre eine Frage an einen Elternteil auch mit der gleichen Frage "ist M oder V drin?" zu filtern.

ID | FD | Frage
01 | M | Wie oft kocht Ihr Mann?
02 | V | Wie oft schaut Ihre Frau Fussball?
03 | MV | Sind sie zufrieden mit der Situation?
04 | ST | Bist Du zufrieden mit Deinen Eltern?

mfg chmee


----------

