Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

INDEXVERGLEICH Funktion BEZUGSFEHLER
#1
Smile 
Hallo Zusammen,

ich habe folgendes Problem mit einer Kombi aus Index- und Vergleichfunktion (Beispieldatei anbei)

Sobald ich eine andere Menge als 1.000 (bei der Menge 1.000 funktioniert die Abfrage einwandfrei) in die Zelle E16 eintrage, erhalte ich einen Bezugsfehler in den Zellen F16 und G16.
Kann mir jemand sagen, was an meiner Funktion falsch ist?


Außerdem wäre es schön, wenn die Funktion auch mit der ungefähren Übereinstimmung funktionieren würde. Also, wenn ich den Preis für 1.200 suche, mir auch der Preis für 1.000 ausgegeben wird.

Danke schon mal für Eure Hilfe :)

Liebe Grüße
sfo

https://www.ms-office-forum.net/forum/sh...p?t=360015


Angehängte Dateien
.xlsx   Preisliste INDEX-VERGLEICH.xlsx (Größe: 13,57 KB / Downloads: 10)
Antworten Top
#2
Hi,

für dein erstes Beispiel:
Code:
=SUMMENPRODUKT(($A$2:$A$15=$F$2)*($B$2:$B$15=F1)*($C$2:$C$15))
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • sfo
Antworten Top
#3
Hallo sfo,

wenn du auf die verbundenen Zellen verzichtest (und die Firmennamen immer gleich schreibst Blush ), ginge es zB so:
Zitat:{
=INDEX($A$5:$G$8;VERGLEICH($D16;$A$5:$A$8;0);VERGLEICH(42;SPALTE($A$4:$G$4)/(($A$4:$G$4=F$15)*($A$3:$G$3<=$E16));1))
}

Achtung! Matrixformel. Die geschweiften Klammern werden nicht mit eingegeben, sondern jede Bearbeitung mit Strg+Shift+Enter abgeschlossen.


Angehängte Dateien
.xlsx   Preisliste INDEX-VERGLEICH.xlsx (Größe: 14,96 KB / Downloads: 8)
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:
  • sfo
Antworten Top
#4
Hallo WillWissen,

leider bekomme ich auch mit der Formel einen Bezugsfehler Undecided

Aber vielen lieben Dank für deine Hilfe.

LG
sfo

Hallo Helmut,

das sieht sehr gut aus :) Wollte aus Gründen der Übersichtlichkeit die Menge jeweils nur 1 x schreiben, aber so geht es auch :)

Vielen Dank!!!

LG
sfo
Antworten Top
#5
Hi,

deinen Bezugfehler kann ich nicht nachvollziehen:

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEF
1MengeFormatPreisFormat90 x 90
25.00080 x 8060,00 €Menge7.000
35.00090 x 9065,00 €Preis45
46.00080 x 8050,00 €ungefähre Übereinstimmung funktioniert gar nicht
56.00090 x 9055,00 €
67.00080 x 8040,00 €Format80 x 80
77.00090 x 9045,00 €Menge10.000
88.00080 x 8030,00 €Preis10
98.00090 x 9035,00 €Ab Menge 9.000 funktioniert die ungefähre Übereinstimmung nicht mehr
109.00080 x 8020,00 €
119.00090 x 9025,00 €
1210.00080 x 8010,00 €
1310.00090 x 9015,00 €
1420.00080 x 805,00 €
1520.00090 x 907,50 €

ZelleFormel
F3=SUMMENPRODUKT(($A$2:$A$15=$F$2)*($B$2:$B$15=F1)*($C$2:$C$15))
F8=SUMMENPRODUKT(($A$2:$A$15=$F$7)*($B$2:$B$15=F6)*($C$2:$C$15))
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • sfo
Antworten Top
#6
Hallo Helmut,

danke nochmal für deine Hilfe.

Wie müsste die Formel lauten, wenn ich die Tabelle transponiere und noch eine Spalte einfüge? Ich bekomme immer die Meldung, dass durch 0 dividiert wird.

Beispieldatei nochmal anbei :)

VIelen Dank schon mal :)


Angehängte Dateien
.xlsx   Preisliste INDEX-VERGLEICH.xlsx (Größe: 15,02 KB / Downloads: 4)
Antworten Top
#7
Hallo sfo,

ich bin zwar nicht Helmut, hab mich aber mal Deiner neuen Aufgabe angenommen.

Einge Deiner Angaben sind nicht eindeutig. Da Du aber von einer nun transponierter Tabelle schreibst, geh ich davon aus, dass Du nun die Daten in I3:R8 meinst!?!

Es fehlen in dieser Datentabelle jedoch Angaben für das Format: "48,3 x 201,1" und außerdem ist unklar, ob Du für eine beliebige Datenmenge wieder den Preis ermitteln willst, der der nächstkleineren Menge  zugewiesen ist. Ich hab dieses nachfolgend zunächst angenommen. Eine andere Ergebnisermittlung ist natürlich auch möcglich, bedarf aber dann Deiner entsprechenden Angaben, wie diese erfolgen soll.

In P4 hattest Du übrigens auch "Fima A" anstelle "Firma A" geschrieben, was ich korrigiert habe.

Die Ergebnisliste hab ich der leichteren Übersicht hier im Beitrag halber gegenüber in Deiner Beispiedatei etwas verschoben. Meine dortige Formel in L12 ist nach unten und rechts ziehend kopieren. In Deiner Datei kannst Du diese Liste natürlich wieder an die von Dir gwünschte Stelle verschieben.

Arbeitsblatt mit dem Namen 'Tabelle2'
IJKLMNOPQRS
325 x 14025 x 14030 x 10530 x 10535 x 13435 x 134
4Firma AFirma BAbweichungFima AFirma BAbweichungFirma AFirma BAbweichung
51000100,00 €200,00 €50,00%150,00 €250,00 €40,00%220,00 €310,00 €29,03%
61500600,00 €500,00 €-20,00%650,00 €550,00 €-18,18%350,00 €460,00 €23,91%
72000400,00 €300,00 €-33,33%450,00 €350,00 €-28,57%420,00 €540,00 €22,22%
830001.500,00 €1.200,00 €-25,00%1.600,00 €1.300,00 €-23,08%1.700,00 €1.900,00 €10,53%
9
10
11FormatMengeFirma AFirma B
1225 x 1401000100,00 €200,00 €
1325 x 1401001100,00 €200,00 €
1435 x 1341777350,00 €460,00 €
1548,3 x 201,12145
16

ZelleFormel
L12=WENNFEHLER(AGGREGAT(14;6;INDEX($5:$9;;VERWEIS(9;1/($J$3:$Z$3=$J12)/($J$4:$Z$4=L$11);SPALTE($J1:$Z1)))/($I$5:$I$9<=MAX($K12;1000));1);"")

ZelleGültigkeitstypOperatorWert1Wert2
J12Liste=$A$5:$A$8
J13Liste=$A$5:$A$8
J14Liste=$A$5:$A$8
J15Liste=$A$5:$A$8
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Gruß Werner
.. , - ...
[-] Folgende(r) 1 Nutzer sagt Danke an neopa für diesen Beitrag:
  • sfo
Antworten Top
#8
Hallo sfo,

in meinem letzten Lösungsvorschlag war die Funktion SPALTE und der Start das Indexbereiches ab Spalte A gar nicht notwendig.

Verkürzt sieht die Formel jetzt so aus:
Code:
{
=INDEX($B$5:$G$8;VERGLEICH($D16;$A$5:$A$8;0);VERGLEICH(42;1/(($B$4:$G$4=F$15)*($B$3:$G$3<=$E16));1))
}

Ich nehme an, dass Werners Formel auch richtig ist. Wenn man aber meinen obigen Vorschlag auf die transformierten Daten umschreibt, ist die Formel so richtig:
Code:
{
=INDEX($J$5:$R$8;VERGLEICH($J16;$I$5:$I$8;1);VERGLEICH(42;1/(($J$4:$R$4=K$15)*($J$3:$R$3=$I16));1))
}

Achtung! Matrixformel. Die geschweiften Klammern werden nicht mit eingegeben, sondern jede Bearbeitung mit Strg+Shift+Enter abgeschlossen.

Neben den geänderten Bezügen muste bei der Ermittlung der Zeile der dritte Parameter der Vergleichsfunktion auf 1 gesetzt werden und bei der  Ermittlung der Spalte  im zweiten Teil des Divisors das "<=" durch ein "=" ersetzt werden.

ps In dieser neuen Version ist anstelle der 42 jede andere Zahl >= 1 auch möglich.


Angehängte Dateien
.xlsx   Preisliste INDEX-VERGLEICH-1.xlsx (Größe: 15,6 KB / Downloads: 3)
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:
  • sfo
Antworten Top
#9
Hallo Helmut,

natürlich ergibt Deine Formellösung (im Normalfall) auch die gleiche Ergebnisse wie mein Vorschlag.
In Deiner Formel könnte noch ein Klammerpaar eingespart werden, wenn die Bedingungsprüfung konsequent über Division vorgenommen wird. In den früheren Excelversionen war die MSO-Hilfe für VERGLEICH() auch noch besser/umfassender, wonach man auch das 3. Argument (die ;1) inklusive des vorangehenden Semikolons hätte einsparen können.

In meiner Formel hab ich darüber hinaus bewusst den Lösungsteil mit WENNFEHLER() geklammert und auch Mengen kleiner 1000 berücksichtigt. Beides kann in Deiner Formel analog noch eingebaut werden (für letzteres anstelle  ... VERGLEICH($J16;... eben ... VERGLEICH(MAX($J16;1000);...)

Ich verzichte aber weiterhin wo möglich prinzipiell auf klassische Matrixformellösungen, u.a. deswegen weil eine solche den spez. Formelabschluss notwendig macht. Diese Lösungsform hat sich auch anderweitig mittlerweile bewährt.
Gruß Werner
.. , - ...
Antworten Top
#10
Moin Werner!
Lediglich ein paar allgemeine Anmerkungen:
Mittlerweile verzichtet Excel auf den speziellen Abschluss per Strg+Shift+Enter
(dies trifft nicht auf Nicht-Abo-Versionen zu)

Ist einerseits nur folgerichtig, denn schließlich ist selbst SUMME() eine Matrix-Formel, AGGREGAT() oder SUMMENPRODUKT() erst Recht.
Andererseits ertappe ich mich ab und an dabei, dass ich den wichtigen Hinweis schlicht vergesse, weil ich nicht (mehr) daran denke.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


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