2017-11-13 1 views
1

Entschuldigung! Kann sein, dass ich keinen schönen Fragetitel geben konnte. Ich habe folgende Beispieldaten. Offensichtlich bei den Ist-Daten wird es anders sein und mehr ...So zählen Sie die Gesamtzahl der Elemente in einer Spalte, wenn der Kopfzeilenname angegeben ist

Daten Screenshot enter image description here

Angenommen, habe ich Pen in D17 Zelle dann erwartetes Ergebnis wird 6 in E17 Zelle sein, wie in Tabelle/DataArray Pen Spalte hat 6 Elemente. Count sollte 4 sein, wenn ich T-Shirt in D17 Zelle und so weiter setze ....

Glauben Sie mir, ich versuchte Kombination vieler Formeln, Suche auf Google aber keine zufriedene gefundene Lösung. Ich kann es durch VBA erreichen, aber ich versuche, es zu lösen, indem ich nur Excel-Formeln verwende.

+0

Ich habe alle Antworten getestet und alle nützlich gefunden. Also, danke an alle. Ich habe "Barry Houdini" akzeptiert, weil es einfach und leicht zu verstehen ist. – harun24hr

Antwort

1

Einige der vorgeschlagenen Formeln hier ein wenig übertrieben zu mir schauen ..... versuchen, diese normalerweise eingegebene Formel

=SUMPRODUCT((B3:K3=D17)*(B4:K13<>""))

oder wird dies die gleiche

=SUM((B3:K3=D17)*(B4:K13<>""))

tun

bestätigt mit CTRL + SHIFT + ENTER

+0

Interessant, ich dachte immer, wenn man Arrays/Matrizen multipliziert, müssen sie die gleiche Größe haben. Das ist eine gute Information. – ImaginaryHuman072889

+0

@ ImaginaryHuman072889 Sie können einen 1 * 10-Vektor mit einer 10 * 10-Matrix multiplizieren, um eine weitere 10 * 10-Matrix zu erhalten, dann addiert 'SUMMRODUCT' einfach das einzelne 10x10-Array. SUM kann hier stattdessen verwendet werden, aber dann brauchst du CSE –

+0

Ja, ich habe gerade herausgefunden, dass das von diesem Post aus möglich ist, weshalb ich auf "MMULT" und "TRANSPOSE" zurückgegriffen habe. – ImaginaryHuman072889

2

Sie können diese Matrixformel in Zelle verwenden E17:

= SUMPRODUCT(MMULT((B3:K3=D17)+0,TRANSPOSE(NOT(ISBLANK(B4:K13))+0))) 

Hinweis, da dies eine Matrixformel ist, Sie Ctrl + Umschalttaste + Geben Sie statt nur Enter drücken müssen nach Eingabe dieser Formel.

+0

Ich werde es versuchen und Feedback geben. – harun24hr

+0

@ harun24hr Es sollte funktionieren, ich habe nur Ihre Daten in mein Blatt eingegeben und diese Formel verwendet und es hat funktioniert. Lassen Sie mich wissen, wenn Sie Probleme haben. – ImaginaryHuman072889

2

Dies wird nicht-Rohlinge zur Verfügung gestellt Benutzer zählen kennt die maximale Anzahl der Zeilen, die Höhe der OFFSET() Funktion zu setzen:

=SUM((OFFSET(B3,1,MATCH(D16,B3:J3,0)-1,10,1)<>"")*1) 

mit Ctrl + Umschalttaste + Geben Sie ausgeführt werden. Die Höhe in dieser Formel ist 10.

+0

Ich würde wahrscheinlich '10' in Ihrer Formel in' REIHEN (B4: B13) 'ändern. Wenn auf diese Weise beispielsweise eine Zeile innerhalb des Zählbereichs eingefügt wird, wird mit "ROWS" dieser Wert dynamisch auf "11" aktualisiert. Dies ist einer der Gründe, warum ich nicht gerne 'OFFSET' oder andere ähnliche flüchtige Funktionen verwende. – ImaginaryHuman072889

+0

Wenn Sie MATCH verwenden, um die richtige Spalte zu identifizieren, können Sie Index verwenden, um die gesamte Spalte abzurufen, und dann COUNTIF umschließen, um keine Leerzeichen zu zählen, dh '= COUNTIF (INDEX (B4: K13,0, MATCH (D17, B3: K3,0)), "<>") ' –

+0

Danke, beide Vorschläge sind richtig! Wäre der Benutzer dieses Blattes gewesen, hätte ich den Eingabebereich (Stift in D17) oberhalb dieser Tabelle platziert, so dass ich mich nicht um die Höhe kümmern muss. – Faseeh

Verwandte Themen