Clever-Excel-Forum

Normale Version: Loop mit <= statt Sverweis?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Sehr geehrte Damen und Herren,

ich habe folgendes Problem: Ich möchte aus einem bestimmten Bereich Tabelle mit 2 Spalten, welche y und x Werte beinhaltet,  zu dem ersten y Wert, der <= ein gebener Wert ist, den zugehörigen x Wert auslesen.

Normalerweise sollte das Problem mit =sverweis( C3;A:B;2;WAHR) (Beispiel) zu lösen sein, aber leider bekomme ich immer einen falschen Wert. Das Problem besteht darin, dass die Tabelle Werte eines Signals beinhaltet, welches ein gewissen Hintergrundrauschen hat und der gesuchte Wert mehrmals vorkommt, deswegen also nicht der erste Wert der <= des gegeben Wertes ausgegeben wird. Es geht darin einen Verfallsparameter darzustellen, also den Punkt an dem die Funktion 50% des peaks nach Erreichen des Maximums erreicht hat.


Jetzt ist die Frage, ob ich zu blöd bin mit der Funktion zu arbeiten, es eine alternative Funktion gibt oder man es z.B. über eine if Schleife lösen kann. Optimalerweise mit mehr als 2 Nachkommastellen, da sverweis leider nur mit bis zu 2 Nachkommastellen rechnen kann.

Es tut mir Leid, wenn die Frage vielleicht etwas basal ist, aber ich beschäftige mich noch so lange mit Excel und ich schaffe es gerade einfach nicht mich richtig tief in VBA einzulesen.
Ich würde mich über Tipps und Lösungsvorschläge freuen, die mir helfen auf die richtige Spur zu kommen.

Anbei eine Tabelle mit Wertepaaren als Beispiel.

Vielen Dank!
(06.01.2016, 23:46)Lor4x schrieb: [ -> ]Sehr geehrte Damen und Herren,

Jetzt ist die Frage, ob ich zu blöd bin mit der Funktion zu arbeiten, es eine alternative Funktion gibt oder man es z.B. über eine if Schleife lösen kann. Optimalerweise mit mehr als 2 Nachkommastellen, da sverweis leider nur mit bis zu 2 Nachkommastellen rechnen kann.

Es tut mir Leid, wenn die Frage vielleicht etwas basal ist...
Anbei eine Tabelle mit Wertepaaren als Beispiel.

Vielen Dank!

Hallo, wie kommst du denn darauf...? Was für ein Wert steht denn in C3 und was erwartest du für ein Resultat..?
C3 war nur als Beispiel gedacht. Ging aber leider nicht so richtig aus meiner Formulierung hervor.

Aber im Prinzip ist C3 immer =max(A:A) *0.5. Spielt doch aber eigentlich keine Rolle, oder?
(07.01.2016, 00:18)Lor4x schrieb: [ -> ]C3 war nur als Beispiel gedacht. Ging aber leider nicht so richtig aus meiner Formulierung hervor.

Aber im Prinzip ist C3 immer =max(A:A) *0.5. Spielt doch aber eigentlich keine Rolle, oder?

Hallo, aber was erwartest du für ein Ergebnis..? Und was meinst du mit den 2 Nachkommastellen..?
Ich möchte den zugehörigen Wert aus Spalte B auslesen. Also zum Beispiel wenn 6,5 der Maximalwert ist, will ich zu dem 1. Wert nach Erreichen des Masimums in Spalte A der <= 3,25 ist, den zugehörigen Wert in Spalte B auslesen .

Wenn man vorher berechnet, dass das Maximum bei 300 liegt, könnte die Funktion so lauten: =SVERWEIS(3.25;A300:B1400;2;WAHR). Ergebnis ist 1.06964286, es müsste aber 0.28214286 rauskommen, weil Zelle A316 den Wert beinhaltet der 3,25  am nächsten ist.


Sorry das mit den Nachkommastellen gilt lediglich für =sverweis(;;;FALSCH).
(07.01.2016, 00:39)Lor4x schrieb: [ -> ]Ich möchte den zugehörigen Wert aus Spalte B auslesen. Also zum Beispiel wenn 6,5 der Maximalwert ist, will ich zu dem 1. Wert in Spalte A der <= 3,25 ist, den zugehörigen Wert in Spalte B auslesen .

Hallo, meinst du so..?

=INDEX(B:B;VERGLEICH(KKLEINSTE(A:A;ZÄHLENWENN(A:A;"<="&C3));A:A;0))
(07.01.2016, 00:39)Lor4x schrieb: [ -> ]...
Sorry das mit den Nachkommastellen gilt lediglich für =sverweis(;;;FALSCH).

Hallo, das ist schlullibulli... WAHR und FALSCH hat was mit genauer oder nicht genauer Übereinstimmung zu tun. Bei WAHR muss die Suchspalte im Übrigen aufsteigend sortiert sein...


Arbeitsblatt mit dem Namen 'Tabelle1'
 CD
33,314559560,28035714
43,250,28214286

ZelleFormel
C3=MAX(A:A)/2
D3=INDEX(B:B;VERGLEICH(KKLEINSTE(A:A;ZÄHLENWENN(A:A;"<="&C3));A:A;0))
D4=INDEX(B:B;VERGLEICH(KKLEINSTE(A:A;ZÄHLENWENN(A:A;"<="&C4));A:A;0))
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Hallo,

hier mal drei Varianten:

6,62911913
135
0,28035714
0,28035714
0,28035714

ZelleFormel
D1=MAX(A:A)
D2=VERGLEICH(D1;A:A;0)
D3{=INDEX(B:B;MIN(WENN(INDEX(A:A;D2):A9999<=D1/2;ZEILE(INDEX(A:A;D2):A9999))))}
D4{=INDEX(B:B;VERGLEICH(KKLEINSTE(A:A;ZÄHLENWENN(A:A;"<="&MAX(A:A)/2));A:A;0))}
D5{=INDEX(B:B;MIN(WENN(INDEX(A:A;VERGLEICH(MAX(A:A);A:A;0)):A9999<=MAX(A:A)/2;ZEILE(INDEX(A:A;VERGLEICH(MAX(A:A);A:A;0)):A9999))))}
Achtung, Matrixformel enthalten!
Die geschweiften Klammern{} werden nicht eingegeben.
Verlassen Sie den Zelleneditor mit Strg+Shift + Enter, statt Enter alleine.
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
(07.01.2016, 06:41)BoskoBiati schrieb: [ -> ]Hallo,

hier mal drei Varianten:

...

Hallo Edgar, die Variante in D4 ist ja praktisch mein Vorschlag (und braucht btw. nicht mit Strg+Enter+Umsch abgeschlossen werden)...

Und hier mal noch n Gedicht..:

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDE
1Wert1Wert2 Wert1Wert2
21,023954420,00089286 3,289442079 
31,010260760,00178571   
41,018481120,00267857 0,280357143 
51,024145310,00357143 0,280357143 
61,027825990,00446429 0,280357143 
71,030144770,00535714 0,280357143 
81,027635110,00625   
91,017311330,00714286   
101,006914130,00803571   
111,013510730,00892857   
121,004930620,00982143   
131,006341470,01071429   
141,006890880,01160714   
151,003856270,0125   

ZelleFormel
D2=KKLEINSTE(A:A;ZÄHLENWENN(A:A;"<="&MAX(A:A)/2))
D4=DBMAX(A1:B1199;2;D1:E2)
D5=DBMIN(A1:B1199;2;D1:E2)
D6=DBSUMME(A1:B1199;2;D1:E2)
D7=DBAUSZUG(A1:B1199;2;D1:E2)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Schon mal vielen Dank für die Antworten, das hat mich schon enorm weiter gebracht!

Leider habe ich die Logik, aber noch nicht 100% verstanden. Ich habe es die verschiedenen Möglichkeiten nochmal mit anderen Datensätzen durchgespielt und mir gefällt die wenn-Verknüpfung am Besten.

=INDEX(G:G;MIN(WENN(INDEX(F:F;VERGLEICH(MAX(F:F);F:F;0)):F9999<=T5;ZEILE(INDEX(F:F;VERGLEICH(MAX(F:F);F:F;0)):F9999))))


Die Variante =INDEX(G:G;VERGLEICH(KKLEINSTE(F:F;ZÄHLENWENN(F:F;"<="&T5));F:F;0)) zeigt das Ergebnis bei anderen Datensätzen leider etwas falsch an, ich habe heute aber keine Geduld mir zu überlegen warum :(.


Jetzt möchte ich den ersten Wert ermitteln der >= T5 ist und diesmal aber in dem Wertebereich bis zu dem Wert von L2(Maximalwert). Ich hab versucht mir das zu überlegen und bin auf folgendes gekommen:

=INDEX(G:G;MIN(WENN(F1:INDEX(F:F;VERGLEICH(Max(F:F);F:F;0))>=T5;ZEILE(F1:INDEX(F:F;VERGLEICH(Max(F:F);F:F;0))))))

was aber nicht funktioniert, da F1:Index() irgendwie nicht funktioniert.

Könnten Sie mir da nochmal kurz was zu sagen? Zu den DB Funktionen habe ich auch einen Versuch gemacht, aber noch nicht so 100% verstanden wie die Kriterien definiert werden müssen.
Alles (inklusive meine Versuch mit der Db Funktion) ist nochmal in der angehängten Tabelle zu finden.

Ich bin auch offen für weitere Erklräungen. Habe schon viel dadurch gelernt.

Viele Grüße
Tim
Seiten: 1 2