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.

Loop mit <= statt Sverweis?
#1
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!


Angehängte Dateien
.xlsx   Werte.xlsx (Größe: 38,88 KB / Downloads: 5)
Antworten Top
#2
(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..?
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#3
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?
Antworten Top
#4
(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..?
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#5
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).
Antworten Top
#6
(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))
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
[-] Folgende(r) 1 Nutzer sagt Danke an Jockel für diesen Beitrag:
  • Lor4x
Antworten Top
#7
(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
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
[-] Folgende(r) 1 Nutzer sagt Danke an Jockel für diesen Beitrag:
  • Lor4x
Antworten Top
#8
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Lor4x
Antworten Top
#9
(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
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
[-] Folgende(r) 1 Nutzer sagt Danke an Jockel für diesen Beitrag:
  • Lor4x
Antworten Top
#10
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


Angehängte Dateien
.xlsx   Werte2.xlsx (Größe: 41,25 KB / Downloads: 2)
Antworten Top


Gehe zu:


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