Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1404to1408
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe zu Matrixformel

Hilfe zu Matrixformel
23.01.2015 11:50:53
Peter
Hallo,
Ich benötige Hilfe bei einer Matrixformel.
Das Problem (samt Beschreibung) findet sich in der angefügten Arbeitsmappe (https://www.herber.de/bbs/user/95199.xlsx).
Ich habe hierzu schon einen Lösungsansatz gefunden (http://www.excelformeln.de/formeln.html?welcher=28), bekomme es aber nicht auf meine Problemstellung angepasst :-(
Gruß,
Peter

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe zu Matrixformel
23.01.2015 11:58:34
SF
Hola,
so:
{=WENNFEHLER(INDEX($C$2:$C$6;KKLEINSTE(WENN($B$2:$B$6=[@Gerät];ZEILE($1:$5));ZEILE(A1)));"")}
und:
{=WENNFEHLER(INDEX($D$2:$D$6;KKLEINSTE(WENN($B$2:$B$6=[@Gerät];ZEILE($1:$5));ZEILE(A1)));"")}
Gruß,
steve1da

AW: Hilfe zu Matrixformel
23.01.2015 12:33:28
Peter
Hallo Steve1da,
diese Formel produziert mir einen Zirkelbezug. Liegt wohl daran, dass auf die Zelle [@Gerät] zugegriffen wird, aber gerade dort soll ja eins der Ergebnisse stehen.
Gruß,
Peter

AW: Hilfe zu Matrixformel
23.01.2015 12:43:02
SF
Hola,
bei mir nicht. Wo hast du die Formel denn hingeschrieben? Ich in B20.
Gruß,
steve1da

Anzeige
AW: Hilfe zu Matrixformel
23.01.2015 12:57:07
Peter
Hallo Steve1da,
wenn ich die Formel in B20 schreibe funktioniert sie. Allerdings steht mein Suchkriterium, die Mitarbeiter-Nr., in B18. Die Werte, in diesem Beispiel A20:C21, sollen alle durch die entsprechende Formel ermittelt werden.
Mit meinen nicht vorhandenen Kenntnisse zu Matrixformeln habe ich es bisher nur geschafft, deinen Vorschlag kaputt zu basteln. Eine Anpassung gelingt mir nicht :-(
Gruß,
Peter

AW: Hilfe zu Matrixformel
23.01.2015 13:08:30
SF
Hola,
für den Mitarbeiter wäre das dann:
{=WENNFEHLER(INDEX(B$2:B$6;KKLEINSTE(WENN($A$2:$A$6=$B$18;ZEILE($1:$5));ZEILE(A1)));"")}
Wobei in deinem Beispiel Mon1 Gerät 1 und Gerät 2 ausleiht - du aber 2 mal Gerät 2 als Lösung hast.
Gruß,
steve1da

Anzeige
AW: Hilfe zu Matrixformel
23.01.2015 13:17:12
Peter
Hallo steve1da,
super und Danke, das klappt hervorragend.
Mein Beispiel war der hilflose Versuch, das ganze mittels Sverweis() zu lösen.
Gruß,
Peter

AW: Hilfe zu Matrixformel
23.01.2015 11:59:19
Klaus
Hallo Peter,
statt dich jetzt mit den zu beachtenden Details in der Matrixrechnung zu verwirren, habe ich dir eine leichter verständliche Lösung mit Hilfsspalten hochgeladen.
https://www.herber.de/bbs/user/95200.xlsx
Grüße,
Klaus M.vdT.

AW: Hilfe zu Matrixformel
23.01.2015 12:26:37
Peter
Hallo Klaus,
charmante und in meinem Fall auch nutzbare Lösung, obwohl ich das arbeiten mit Hilfsspalten grundsätzlich nicht so schön finde.
Irgendwann muss ich wohl mal an die Matrixfunktionen ran...mir gruselts jetzt schon davor :-)

Anzeige
AW: Hilfe zu Matrixformel
23.01.2015 12:50:46
Klaus
Hallo Peter,
erstmal Danke für die Rückmeldung.
Kaum Excel/VBA-Kenntnisse
obwohl ich das arbeiten mit Hilfsspalten grundsätzlich nicht so schön finde
Tja, für eins von beiden wirst du dich entscheiden müssen :-)
Ich kann dir auch eine VBA-Lösung mit einer zugeschneiderten UDF anbieten, die ist meines ermessens nach leichter zu verstehen als eine Matrixformel.
https://www.herber.de/bbs/user/95202.xlsm
Gratisbonus: Im Gegensatz zum SVERWEIS funktioniert meine UDF XVERWEIS auch nach links, wenn du als Spaltenindex eine negative Zahl angibst.
Grüße,
Klaus M.vdT.

Anzeige
AW: Hilfe zu Matrixformel
23.01.2015 13:03:49
Peter
Hallo Klaus,
die UDF ist ja der echte Klopfer! Danke dafür!
"Kaum Excel/VBA-Kenntnisse" heisst, dass ich einfach den Ball gern flach halte, und wenn ich sehe, was sich hier an geballter Excel-Kompetenz tummelt, habe ich das Gefühl, dass meine Excel Kenntnisse tatsächlich mehr als dürftig sind.
Gruß,
Peter

Danke für die Rückmeldung! owT.
23.01.2015 13:06:57
Klaus
.

Bereich einschränken
23.01.2015 16:31:24
Peter
Hallo Klaus,
die UDF ist ziemlich cool. Allerdings habe ich ein Problem mit den Bereichen.
Da ich nicht weiss, wie groß meine Suchtabelle werden wird, habe ich bei Suchspalte etc. der Einfachheit halber jeweils komplette Spalten angegeben.
Nun benötigt Excel ewig, wenn ich das Kriterium ändere. Bei ca. 30 Zellen sind das einige Minuten, was bei etwas über 1 Mio Zeilen ja auch nachvollziehbar ist.
Gibt es eine Möglichkeit, die Bereiche so einzugrenzen, dass es nur bis zur letzten Tabellenzeile geht?
Ist Bereichverschieben() in der Funktion nutzbar oder gibt es eine bessere, handlichere Möglichkeit?
Gruß,
Peter

Anzeige
Klaus' UDF ist wie folgt deklariert, ...
24.01.2015 03:12:14
Luc:-?
…Peter:
XVerweis(Kriterium As String, SuchSpalte As Range, IndexUmSpalten As Long, FindeAnzahl As Long)
Alles, was dem Datentyp des jeweiligen Arguments entspricht, kann dafür auch eingesetzt wdn. Da Arg2 einen ZellBezug verlangt und BEREICH.VERSCHIEBEN einen solchen liefert, dürfte es kein Problem sein, für Arg2 einen solchen Ausdruck in der Fml einzusetzen, sofern er nur 1 Spalte liefert. Dafür muss Arg1 ein Text oder ein Bezug auf eine einzelne Zelle mit Text sein. Für Arg3+4 gilt Analoges (je 1 Ganzzahl!).
Das mit den kompletten Spalten könnte Klaus auch direkt in der UDF abfangen, ansonsten müsstest du das in einem Arg2-Ausdruck (⇒TeilFml) selber tun.
Morrn, Luc :-?
Besser informiert mit …

Anzeige
AW: Klaus' UDF ist wie folgt deklariert, ...
24.01.2015 10:21:47
Peter
Vielen Dank für die Info, Luc :-?. Ich werde mal ein wenig experimentieren.

in der UDF ...
26.01.2015 09:00:58
Klaus
... kann man natürlich die RANGE eindampfen, aber das halte ich nicht für den richtigen Weg. Wenn du, der User, eine ganze Spalte als Bereich angibst obwohl A1:A150 vielleicht gereicht hätte bist du doch selber Schuld :-)
Davon abgesehen bringt das Bereich-Eingrenzen nicht viel, denn:
For Each r In SuchSpalte
If r.Value = Kriterium Then
BisherGefunden = BisherGefunden + 1
If BisherGefunden = FindeAnzahl Then
XVerweis = r.Offset(0, IndexUmSpalten)
Exit For
End If
End If
Next r

Mal angenommen, es wird in A1:A10000 gesucht, dann sind das theoretisch 10.000 Schleifendurchläufe. Ich bilde mir ein, dass "Exit For" die Schleife beendet bevor die 10.000 erreicht werden. Wenn dein Suchbegriff in A5 und A7 steht, rennt die Schleife 7x durch und bricht dann ab.
Wenn es den Suchbegriff nicht gibt, rennt der Zähler natürlich bis 10.000 hoch.
Bessere Idee:
VOR der Schleife prüfen, ob es überhaupt ein Suchergebniss geben kann. Wenn nicht, auch die Schleife nicht durchrennen lassen. Makro könnte dann so aussehen:

Option Explicit
Public Function XVerweis(Kriterium As String, SuchSpalte As Range, IndexUmSpalten As Long,  _
FindeAnzahl As Long)
Dim r As Range
Dim BisherGefunden As Long
BisherGefunden = 0
If Application.WorksheetFunction.CountIf(SuchSpalte, Kriterium) 
Übrigens: Noch schneller wäre die Lösung mit Hilfsspalten :-) du legst dir selber Steine in den Weg.
Grüße,
Klaus M.vdT.

Anzeige
AW: in der UDF ...
26.01.2015 10:55:33
Peter
Moin Klaus,
bin etwas verwirrt...nein, nicht wegen der Funktion, sonder wegen Excel. Als ich am Samstag die Funktion getestet habe, hat Excel mehrere Minuten benötigt um die Ergebnisse anzuzeigen. Heute ist alles ok. Enter drücken und die Ergebnisse werden sofort dargestellt - trotz der Spaltenangabe A:A als SuchSpalte und trotz 50 Zellen, die das Ergebnis enthielten. Komisch!
Aber ein freundliches "Danke" für die Hilfe und die Änderung darf natürlich auch nicht fehlen!
Gruß
Peter

Danke für die Rückmeldung! owT.
26.01.2015 10:56:28
Klaus
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige