Ich habe eine Tabelle mit Studiendaten und möchte (muss) diese per Makro auswerten. In der Tabelle mit CountIfs bzw. Zählenwenns funktioniert es einwandfrei, leider bekomme ich bei meinem Makro den #Wert-Fehler.
Zur Sachlage: Meine Studiendatentabelle (Quelle) und enthält unter anderem die Spalten Studientyp und Jahr. Studientyp hat nur vier Ausprägungen. Für die Auswertung wird zunächst eine neue Tabelle erstellt (Arbeitsblatt). Dort werden in die erste Spalte die vier Ausprägungen des Studientyps eingetragen (beginnend mit Zeile 2) und in die erste Zeile die Jahre z. B. 2013, 2014, 2015 (beginnend in Spalte 2). Nun soll in die Felder die Countifs-Formel rein: Diese soll das Vorkommen der Werte, die in der Arbeitstabelle eingetragen sind, in den entsprechenden Spalten der Quelle zählen. Also z. B. zähle wenn der Wert der Cells(1,3) ("AMG") in den Spalte "Studientypen" (Quelle) und der Wert der Cells(2,2) (2014) in Spalte "Jahr" vorhanden ist.
Ergebnis:
Der Code dazu:
Zeile = Zeile + 1
For Zaehler = Spalte To EndeSpalte
For Innenzaehler = Zeile To EndeZeile - 1
Sheets(Arbeitsblatt).Cells(Innenzaehler, Zaehler) = _
[CountIfs(Sheets(Quelle).Range(Sheets(Quelle).Cells(2,Studientyp),Sheets(Quelle).Cells(maxLaenge,Studientyp)), Sheets(Arbeitsblatt).Cells(Innenzaehler,Spalte)]
Next
Next
Die Schleife funktioniert korrekt (getestet mit Sheets(Arbeitsblatt).Cells(Innenzaehler, Zaehler) = "Bingo"), der Wert, der gesucht wird, passt auch (MsgBox Sheets(Arbeitsblatt).Cells(Innenzaehler,Spalte)). Ich habe es auch mit Sheets(Arbeitsblatt).Cells(Innenzaehler,Spalte).Value probiert und auch mit "*" & Sheets(Arbeitsblatt).Cells(Innenzaehler,Spalte) & "*".
Studientyp, Spalte, maxLaenge sind vom Typ integer. Studientyp ist die Nummer der Spalte in der Quelle, in der die Studientypen drin stehen; Spalte ist die Nummer der ersten Spalte, wo das erste Jahr drin steht; maxLaenge ist die Anzahl der Datensätze in der Quelle-Tabelle (Werte stimmen soweit - mit MsgBox Ausgabe überprüft).
Ich weiß einfach nicht, wo der Fehler ist oder was ich noch ausprobieren/ändern soll.
|