Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Wert in Matrix suchen und ggf. interpolieren


Betrifft: Wert in Matrix suchen und ggf. interpolieren von: klausreich@web.de
Geschrieben am: 07.08.2018 16:43:43

Guten Tag Herber's

eigentlich ein bekanntes Thema : liefere mir Zellenwerte. Doch wie geht's, wenn ich auch Daten von Zwischenwerten brauche ? Will sagen : 51,27/Aug sollte mit dem Ergebnis ( Dreisatz ), also via bekannter 51 und 52 Grad für 51,27 mit 393,19 beantwortet/interpoliert werden.

Ein anderer Ansatz : ich habe auch monatliche lineare Funktionen im Sinne von y = a mal x + b parat, um für alle gesuchten - auch Zwischenwerte - Daten zu ermitteln. Für den Aug z.B. 3,103xGrad+552,1. Hier müßten nun aus einer Tabelle von Jan bis Dez die Parameter a und b "herausgefischt" werden. Welches Verfahren haltet Ihr für eleganter ? Wie würdet Ihr eine 12-Zeilen-Tabelle mit a- und b-Konstanten einbinden ?
Guckt bitte https://www.herber.de/bbs/user/123189.xlsx

Danke vorab, Klaus Reich

  

Betrifft: AW: mit INDEX() und VERGLEICH() ... von: neopa C
Geschrieben am: 07.08.2018 17:10:23

Hallo Klaus,

... lässt sich das mit dem "1. Verfahren" wie folgt ermitteln:

=INDEX(A:M;VERGLEICH(E16;A1:A12);VERGLEICH(E17;1:1;0))-(INDEX(A:M;VERGLEICH(E16;A1:A12);
VERGLEICH(E17;1:1;0))-INDEX(A:M;VERGLEICH(AUFRUNDEN(E16;);A1:A12);VERGLEICH(E17;1:1;0)))*REST(E16;1)


Das "2. Verfahren würde eine kürzer Formel ergeben, aber dazu müsste man erst die zweite Tabelle aufstellen ;-)

Gruß Werner
.. , - ...


  

Betrifft: AW: mit INDEX() und VERGLEICH() ... von: klausreich@web.de
Geschrieben am: 07.08.2018 22:06:15

Danke ! Ihr seid eine tolle Truppe ! Hier auch die Parameter, also die zweite Tabelle
https://www.herber.de/bbs/user/123193.xlsx

Klaus


  

Betrifft: AW: nun wie bereits geschrieben ... von: neopa C
Geschrieben am: 08.08.2018 11:47:10

Hallo Klaus,

... dann wird die Formel viel einfacher. Angenommen der Monat steht in H1 und die Gradzahl in G1, dann:

=WENN(VERGLEICH(1;INDEX(IDENTISCH(A$1:A$9;A1)*1;);0)=ZEILE();A1;"")

Übrigens, eine "Truppe" sind wir nicht. Hier in Herbers Forum helfen ein freiwilliger "Haufen" von Individualisten.

Gruß Werner
.. , - ...


  

Betrifft: AW: nun wie bereits geschrieben ... von: klausreich@web.de
Geschrieben am: 08.08.2018 12:34:59

Guten Mittag, Leute

um igendwelche Feinheiten zu erkennen reichen meine Kenntnisse leider einfach nicht aus : ich habe zum Teil schon Probleme, auch nur Zeilen-, Bereichsangaben an mein Sheet anzupassen

die "Truppe" war nicht böse gemeint : ich wollte damit nur ausdrücken : Ihr seid eine tolle, aktive, rasend schnell reagierende Gemeinschaft. Wie bei der Bundeswehr : wenn einer ( mangels Wissen ) nicht mehr kann, trägt der Stärkere ( der Kundige ) seinen Rucksack.

Nochmals Danke, Klaus


  

Betrifft: AW: hierzu ... von: neopa C
Geschrieben am: 08.08.2018 12:53:12

Hallo Klaus,

... stell ich eben fest, dass mich vor dem Mittag offensichtlich die Hitze dazu verführt hatte, Dir ein Formel bereitzustellen, die mit Deiner Thematik überhaupt nicht zu tun hat :-( Sorry.

Die richtige Formel ist natürlich =INDEX(B:B;VERGLEICH(H1;A:A;0))*G1+INDEX(C:C;VERGLEICH(H1;A:A;0))

unter der bereits noch richtig geschriebenen Voraussetzung: "der Monat steht in H1 und die Gradzahl in G1"

Das mit der der "Truppe" hatte ich auch nicht böse verstanden. Ich wollte nur darauf hinweisen, das die Helfer hier nur ein Art "virtuelle Gemeinschaft" sind und die mE nicht mit einer Truppe vergleichbar sind.

Ich hoffe mit der neuen Formel kommst Du auf jeden Fall klar. Andernfallsmelde Dich einfach wieder.

Gruß Werner
.. , - ...


  

Betrifft: AW: mit INDEX() und VERGLEICH() ... von: Luschi
Geschrieben am: 08.08.2018 07:23:25

Guten Morgen Werner,

habe mir Dein Formelkonstrukt mal angeschaut und für gut befunden, habe aber folgende Amnerkungen:
- das Weglassen von Parametern (VERGLEICH(E16;A1:A12)) habe ich noch nie gut gefunden,
  weder bei Excel-Formeln noch in der Vba-Programmierung
- da 2mal der selbe Bereichswert berechnet werden muß (INDEX(A:M;VERGLEICH(E16;A1:A12)),
  würde ich alle Index-Bereiche in Namen verpacken und dann mit den Namen rechnen
- oder 3 Teilformeln erstellen und dann damit rechnen
- bin mal gespannt, ob der Fragesteller die Feinheiten Deiner Lösung erkennt.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: zu Deinen Anmerkungen ... von: neopa C
Geschrieben am: 08.08.2018 10:35:08

Hallo Luschi,

... zu: "das Weglassen von Parametern (VERGLEICH(E16;A1:A12)) habe ich noch nie gut gefunden" Ich schon ;-) So wie von mir hier genutzt, ist es in der MSO-Hilfe ("1 oder nicht angegeben") explizit angegeben (wenn auch insofern falsch dokumentiert, weil da dann noch das Semikolon steht und dann der Parameter nicht wie eine 1 sondern wie eine 0 wirkt). Im Beispiel ist ist aber von mir nicht nur die 1 sondern auch das Semikolon weggelassen wurden. Und so ist es 100% korrekt.

Auf den Einsatz von benannten Formeln hatte ich hier verzichtet, weil ich dazu mehr im Beitrag hätte schreiben müssen.

So lang/unübersichtlich ist die Formel nun auch wieder nicht, dass ich hätte diese in 3 Teilformeln zerlegen wollen.

Gruß Werner
.. , - ...


  

Betrifft: AW: zu Deinen Anmerkungen ... von: {Boris}
Geschrieben am: 08.08.2018 14:10:08

Hi Werner,

ich denke, dass es Luschi nicht um "korrekt" oder "falsch" ging, sondern um die Tatsache, dass man optionale Parameter - obwohl sie eben optional sind - dennoch angeben soll, damit man den Default-Wert nicht "erraten" bzw. nachlesen muss - und damit Defaultwerte auch im Nachhinein vielleicht mal geändert werden können, ohne dass die Funktion ein anderes (unerwünschtes) Verhalten an den Tag legt. Das alles ist aus Sicht eines Programmierers (und so einer ist Luschi) dann wohl schlicht "sauberer". ;-))
Ich selbst lass sie ja auch weg - kann aber die Argumentation FÜR deren explizite Angabe schon nachvollziehen.

VG, Boris


  

Betrifft: AW: zu Deinen Anmerkungen ... von: {Boris}
Geschrieben am: 08.08.2018 14:10:09

Hi Werner,

ich denke, dass es Luschi nicht um "korrekt" oder "falsch" ging, sondern um die Tatsache, dass man optionale Parameter - obwohl sie eben optional sind - dennoch angeben soll, damit man den Default-Wert nicht "erraten" bzw. nachlesen muss - und damit Defaultwerte auch im Nachhinein vielleicht mal geändert werden können, ohne dass die Funktion ein anderes (unerwünschtes) Verhalten an den Tag legt. Das alles ist aus Sicht eines Programmierers (und so einer ist Luschi) dann wohl schlicht "sauberer". ;-))
Ich selbst lass sie ja auch weg - kann aber die Argumentation FÜR deren explizite Angabe schon nachvollziehen.

VG, Boris


  

Betrifft: AW: sehe ich etwas anders ... von: neopa C
Geschrieben am: 08.08.2018 15:15:33

Hallo Boris,

... ich kenne Luschi persönlich und weiß um seine Fähigkeiten und Vorzüge.

Das war u.a. auch ein Grund, warum ich ihm meine Feststellungen und Meinung dargelegt habe, obwohl ich natürlich auch die Argumentation für eine explizite Angabe des Vergleichtyp-Arguments nachvollziehen kann. Aus letzterem Grund stelle ich in meinen Forenbeiträgen seit längerer Zeit das Argument 0 für exakte Suche mit einer VERGLEICH() und SVERWEIS()-Formel auch ein. Und dies obwohl es auch nicht notwendig wäre. Doch führte jedoch ein abschließendes ";" ohne Folgewert vor der schließenden Klammer manchmal zu Nachfragen, weil die MSO-Hilfe was anderes suggeriert.

Mit anderen Worten, stünde in der MSO-Hilfe anstelle:
"=VERGLEICH(Suchkriterium; Suchmatrix; [Vergleichstyp])" es so: "=VERGLEICH(Suchkriterium; Suchmatrix;Vergleichstyp)" dann wäre es wirklich "unsauber", eine VERGLEICH()-Formel ohne das 3. Argument anzugeben, auch wenn es ohne dies richtig auswertet.

Aber so ist mE die MSO-Hilfe "=VERGLEICH(Suchkriterium; Suchmatrix; [Vergleichstyp])" betrachte ich als "unsauber" oder sogar falsch dokumentiert. Denn richtig(er) wäre: "=VERGLEICH(Suchkriterium; Suchmatrix [;Vergleichstyp])"

Insofern betrachte ich auch meine hier eingestellten Formel weiterhin als "sauber" und das wollte ich Luschi vermitteln.

Gruß Werner
.. , - ...


  

Betrifft: AW: zu Deinen Anmerkungen ... von: Luschi
Geschrieben am: 08.08.2018 15:33:12

Hallo {Boris},

danke für Deinen Beistand! aber aus Werners professioneller Sicht auf Excelformeln kann ich ihn auch verstehen. Aber seine tiefgründigen Lösungsvorschläge (und das ist sehr positiv gemeint) sind halt oft für meinen Geschmack ein bischen zu professionell; aber er kennt da ja meine Meinung.
Meine Sicht auf optionale Parameter hat sich auch geändert und ist nicht mehr so starrsinnig wie früher, seit ich mich verstärkt mit Dot.Net/C# beschäftige. Dort wird von Version zu Version die Faulheit des Programmierers dahingegen unterstützt, daß man ganze Passagen von Parameter weglassen kann - nur da steht eben noch der Roslyn-Compiler im Hintergrund und überwacht meine Vekürzungsbemühungen. Alles das, was ich bei Delegaten/anonymen Funktionen / Linq / funktionaler Programmierung usw. bewußt weglasse, schreibt der Compiler dann doch in das Kompilat.
Du hast Recht, Formel (aber auch Vba) muß man lesen können wie ein Buch und nicht immer daran denken müssen, ob es da noch was gibt, was zwar nicht angegeben, aber mit Voraussetzungen verbunden ist. Gerade in der von mir zitierten Teilfunktion ist die größenmäßige Sortierung Grundvorrausetzung - was aber der User nicht erkennen kann, weil er nicht weiß, daß da was weggelassen wurde aber für den Profi zum Einmaleins des Wissens gehöhrt.

Gruß von Luschi
aus klein-Paris


  

Betrifft: spätestens (früheres) LO/OO benötigte manche ... von: lupo1
Geschrieben am: 08.08.2018 17:44:05

... dieser Argumente dann explizit, wenn man Excel-Dateien öffnen wollte.

Das hat sich vermindert, aber ob alle Excel-Verkürzungen mittlerweile erkannt werden?

OT: LO/OO kann z.B. auch nicht =VERWEIS(2;1/(..., den relativ wichtigen Rückwärtsverweis.


  

Betrifft: AW: Wert in Matrix suchen und ggf. interpolieren von: klausreich@web.de
Geschrieben am: 10.08.2018 13:32:11

Hi in's Team,

ist ja toll, daß ein Anfänger eine Diskussion unter Spezialisten auslösen kann. Schaut Euch bitte 'mal https://www.herber.de/bbs/user/123259.xlsx an ! Mein zweiter Lösungsansatz arbeitet wenig elegant mit monatlichen Funktionen als y = ax+b, die ich mit SVERWEIS berechne. Gibt's da nicht auch ohne VBA eine "wirkliche, mathmatische" Funktion im Sinne von y = f(Monat, x) ?

Schönes Wochenende, Klaus


  

Betrifft: AW: die Formel dafür hast Du doch in F20 owT von: neopa C
Geschrieben am: 10.08.2018 14:02:06

Hallo Klaus,


  

Betrifft: AW: die Formel dafür hast Du doch in F20 owT von: klausreich@web.de
Geschrieben am: 11.08.2018 12:02:06

Richtig neopa C ! Ich suchte jedoch etwas schöneres, eleganteres als SVERWEIS. Also etwas, das mir H. Kühnlein unter http://www.excelformeln.de/tips.html?welcher=14 vormacht ( die Funktion ist als String hinterlegt ). Ich scheitere jedoch daran, mir nur auf Monat hin den Text mit den Monatsfaktoren zusammenzustellen. Aber : Thema erledigt. Quick and dirty ist sinnvoller als schön und aufwendig.

Danke an alle, Klaus


Beiträge aus dem Excel-Forum zum Thema "Wert in Matrix suchen und ggf. interpolieren"