Index und Summenprodukt
#1
Hallo an alle,

ich benötige Hilfe und hoffe sehr, dass mir hier geholfen wird.

Ich habe in einem Datenblatt in einer Excel-Datei eine Liste mit 4 Spalten (jeweils eine Überschrift) und 25 Zeilen. Gefüllt mit Zahlen aus einem andern Datenblatt. Die Zahlen  sind von 1 bis ca. 200.
Es können auch doppelte Zahlen vorkommen. Nun habe ich neben der 1.Liste eine weitere Liste, in dieser habe ich in der ersten Spalte die Zahlenreihe von 1 bis 30 stehen. Nun möchte ich in der 2. Spalte, dass Excel in der 1.Liste überprüft, in welcher Spalte die Zahl eins steht. Die Überschrift soll als Ergebnis in die zweite Spalte der Liste 2.
Dafür habe ich folgende Formel:

=INDEX($A$2:$D$27;1;SUMMENPRODUKT(($A$2:$D$27=G3)*SPALTE($A:$D)))    --- In G3 steht die 1
=INDEX($A$2:$D$27;1;SUMMENPRODUKT(($A$2:$D$27=G4)*SPALTE($A:$D)))    --- In G4 steht die 2 
usw.

Das klappt auch sehr gut. Nur sobald eine Zahl in der 1.Liste doppelt ist bringt er verschiedene Falsche Möglichkeiten. 
Zum Beispiel setzt er den Namen der Überschrift aus der Spalte die noch gar nicht zum Zuge kam....
Ich würde mir wünschen, dass hier einfach leer bleibt.
Das heißt wenn etwa die Zahl 10 zweimal da ist, sollte die Zeile in der 2. Liste einfach leer bleiben.
Was noch zu sagen wäre, ist dass wenn Beispielsweise die 5 in der 1. Liste doppelt ist, die 6 erst gar nicht erscheint. Was auch gewollt ist. Es geht dann irgendwo in der Tabelle mit der 7 weiter. 

Ich hoffe ich konnte es verständlich erklären und bekomme Hilfe.

LG Brigitte


Angehängte Dateien Thumbnail(s)
   
Top
#2
Hier mit Überspringen diverser Schritte:


.xlsx   180429 dHondt.xlsx (Größe: 14,81 KB / Downloads: 5)
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • Brigitte66
Top
#3
Erst einmal Danke.

Allerdings bräuchte ich eine passende Formel, damit ich dahinter die passenden Namen setzen kann.
Bei meinem Screenshot sieht man, dass obwohl Platz 13 doppelt belegt ist, bei Platz 13 ein "D" ist. 
Es müsste allerdings ein Losverfahren zwischen "A" und "C" stattfinden.
Platz 14 ist ja erkennbar durch die Anzeige #WERT!, es würde schon reichen, wenn das auch bei Platz 13 wäre.


LG Brigitte
Top
#4
Hallo Brigitte,

wie wäre es mit:

=WENN(ZÄHLENWENN($A$2:$D$27;G3)>1;"";......)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Brigitte66
Top
#5
Ich habe jetzt die Formel mit Deiner Hilfe so ergänzt:

=WENN(ZÄHLENWENN($A$2:$D$27;G3)>1;"";SUMMENPRODUKT(($A$2:$D$107=G3)*SPALTE($A:$D)))

So zeigt er mir das mit Spaltenreihe gut an. 
Nur hätte ich gerne noch statt Spaltenreihe 1 2 3 oder 4 den Spaltenname der oben steht. A B C D...
In Spalte 1, steht zBsp. "Max" statt 1 und in Spalte 2 steht zBsp. "Mia" statt 2. Also sollte dann auch statt 1, Max stehen und statt 2 Mia usw..
Die Doppelten Plätze wie die zBsp. in meinen Screenshot die 13 sollten dann eben die 13 und die 14 entweder Leer bleiben oder Eben erkennbar.

Mit einer weiteren Hilfsspalte geht das zwar. Wäre aber schön, wenn es auch so gehen würde.

LG Brigitte

Ups, hab noch was vergessen. Bin Blond und brauche da eine Blondinen Erklärung.  :19:
Top
#6
Hallo Brigitte,

1. zu Spaltenname
Den hattest du doch schon mit der Index-Funktion. Warum hast du den denn nicht mit in den dritten Parameter der Wenn-Funktion kopiert?

2. Erklärung
ich versuche es einmal von innen nach aussen:

A := $A$2:$D$107=G3
dies erzeugt eine Matrix mit 106 Zeilen und 4 Spalten. In jedem Element der Matrix steht ein Wahrheitswert (WAHR wenn der Werte der Ausgangsmatrix = G3 ist, ansonsten FALSCH)

A' := (A)*
durch die Multiplikation der Matrix werden die Wahrheitswerte in Zahlen umgewandelt. Hierbei wird WAHR zu 1 und FALSCH zu 0.

B := (A)*SPALTE($A:$D)
die Matrix der Nullen und Einsen wird jetzt mit einer gleich grossen Matrix mit Spaltennummern multipliziert. Ergebnis ist eine Matrix mit sehr vielen Nullen und Spaltennummern an den Stellen, an den die Ausgangsmatrix = G3 ist.

C:= SUMMENPRODUKT(B)
die Elemente der Matrix werden summiert. Wenn in der Ausgangsmatric G3 nur einmal vorkommt, erhalte ich die richtige Spaltennummer, ansonsten werden Spaltennummern addiert und ich kann nichts damit anfangen.

D:= INDEX($A$2:$D$2;1;C)
wenn das Summenprodukt zwischen 1 und 4 liegt bekomme ich die Überschrift der entspechenden Spalte angezeigt.

E:= ZÄHLENWENN($A$2:$D$27;G3)
hiermit zähle ich wie häufig G3 in der Matrix vorkommt.

F:= E>1
wenn G3 mehr als einmal in der Matrix vorkommt erhalte ich WAHR, ansonsten
FALSCH.

G:= WENN(F;"";D)
Wenn G3 mehr als einmal in der Matrix vorkommt schreibe ich "", ansonsten die Überschrift der Spalte.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Brigitte66
Top
#7
Hallo Helmut,

erst einmal Dankeschön für Deine Hilfe.
Warum ich den nicht gleich so gemacht habe?!?!
Was soll ich sagen... Zählt die Ausrede "Blond".  Angel

Hab´s jetzt soweit hinbekommen.

Nun habe ich gemerkt, wenn ich die Hilfsspalte benutze, kann ich die Formel in der Hilfsspalte so machen, dass nicht nur die Leerzeile in der Hilfspalte Leer angezeigt wird sondern auch die darauffolgende Zeile.
Es ist ja bei doppelter Zahl so, dass immer die nächstfolgende Spalte auch frei bleibt.
Nun zeigt mir diese Spalte dann #Wert an.

Bekommt man das auch noch hin ohne Hilfsspalte, dass auch diese dann Leer ist?!?

Dann wäre es perfekt.

So sieht die Formel jetzt aus:
=WENN(ZÄHLENWENN($A$2:$D$27;G3)>1;"";(INDEX($A$2:$D$27;1;SUMMENPRODUKT(($A$2:$D$27=G3)*SPALTE($A:$D)))))

Und noch mal DANKESCHÖN.

Liebe Grüße 
Brigitte
Top
#8
Meine Lösung zeigt doch schon die Anzahl d'Hondt'scher Sitze. Und die werden - zumindest in manchen Fällen - von der Liste der Partei gefüllt.

Daher weiß ich nicht, was alles andere soll.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#9
Es geht nicht nur um die Anzahl der Sitze.
Sondern an welcher Stelle ein Losverfahren statt finden muss und die Auflistung der Plätze möglichst durch Eingabe der Stimmen erfolgt.
Das habe ich ja inzwischen alles soweit.
Ist nur noch ein kleiner Schönheitsfehler, der mich stört. 

Ansonsten genau wie ich es mir Vorgestellt habe. Wie im Anhang zu sehen, muss ich nur noch die Namen eintragen der jeweiligen Listen.
Und habe dann auch gleich die Anzahl für die Minderheiten, um wenn nötig entsprechend zu handeln.

LG Brigitte


Angehängte Dateien Thumbnail(s)
   
Top
#10
Hallo Brigitte,

den Fehlerwert erhältst Du, weil es in Deiner Auflistung A2:D27 den Wert 22 nicht gibt.

Dem könntest Du z.B. mit folgender Formel abhelfen:

Code:
=WENN((ZÄHLENWENN(A$2:D$27;G3)>1)+(ZÄHLENWENN(A$2:D$27;G3)=0);"";INDEX($2:$2;1;SUMMENPRODUKT((A$2:D$27=G3)*SPALTE(A1:D1))))
und diese nach unten kopieren.
Gruß Werner
.. , - ...
[-] Folgende(r) 1 Nutzer sagt Danke an neopa für diesen Beitrag:
  • Brigitte66
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste