Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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
Vlookup über Variablen
25.07.2013 14:50:58
nimzowitsch@gmx.de
Hallo zusammen
ich habe folgendes Problem.
Ich habe sogenannte "Schranken". Wenn ein Wert zwischen zwei Schranken ist, soll der kleinere Werte genommen werden.
Wenn die Schranken auf der Excel Tabelle wären, wäre das ganze mit einem Vlookup(...;...;...;wahr) leicht lösbar.
Leider kann ich die Daten (nur die Schranken), der Abfragewert steht natürlich auf einer Tabelle, nicht auf eine Exceltabelle bringen(rechte Problematik - Teamintern, sondern muss sie als Variablen per VBA festlegen.
Ich dachte dass sowas irgendwie mit Arrays gehen können, aber ich habe keine Ahnung wie.

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
schau mal,...
25.07.2013 15:18:37
Matze
Hallo Nimzo,
in C1 =WENNFEHLER(SVERWEIS($C$1;$A$1:$B$9;2;0);"")
das Wennfehler falls der Wert "nicht" vorhanden ist.
Matze

nein, so gehts nicht
25.07.2013 15:30:52
nimzowitsch@gmx.de
Hallo Matze
Danke für den Input. Aber leider trifft das aus zwei Gründen nicht.
1. Der Bereich A1 bis B9 existiert nicht auf dem tabellenblatt sondern muss irgendwie (wie auch immer) als variable/Bereich/array in vba deklariert und gefüllt werden, da es nicht möglich sein wird, die Werte irgendwo auf der Tabelle zu platzieren.
2. Dein SVerweis würde nur genaue Übereinstimmungen bringen (daher mein WAHR am Ende der Formel)
Viele Grüsse
Nimzo

Anzeige
Verwende doch Namen für die Schranken, ...
25.07.2013 16:15:30
Luc:-?
…Nimzowitsch;
dann hättest du das Problem nicht.
1.Namen definieren, zB UGrz und OGrz mit einer Konstanten als Bezug, also bspw …
UGrz =25 OGrz =100 oder auch als MatrixKonstante, falls mehrere benötigt wdn: UGrz ={25.100.200} OGrz = {100.175.300} → ggf auch als senkrechter Vektor: ={25;100;200}
So kannst du in der Fml ganz einfach mit diesen benannten Konstanten vgln.
Gruß Luc :-?
PS: Du solltest deine eMail-Adresse nicht so unter's Volk streuen. Hast wohl die falsche Zeile im Formular erwischt. Hier reicht ein eindeutiger, weil leicht wiederzufindender, NickName.
Besser informiert mit …

Anzeige
AW: Verwende doch Namen für die Schranken, ...
25.07.2013 16:32:26
Nimzo
Hi Luc:?
Danke für die Hinweise.
Leider verstehe ich nicht, (ausser mit der Mailadresse) was du meinst?
wie müsste de Formel aussehen? Wie definiere ich die Namen?
viele Grüsse
Nimzo

Reiter Formeln - Button Namen - definieren, ...
25.07.2013 16:51:29
Luc:-?
…Nimzo;
drauf klicken und Formular ausfüllen → oben den Namen eintragen, zb UGrz, unten dann die Konstante, zB =25 oder eben als MxKonst ={25.100.200}
Der Name wird dir anschld beim FmlErstellen angeboten, du musst ihn nur noch richtig einsetzen (wie eine Zelle bzw einen Bereichsvektor).
Luc :-?

AW: Reiter Formeln - Button Namen - definieren, ...
25.07.2013 16:58:08
Nimzo
ok, dass bekomme ich noch hin.
Aber wie schaut dann die Formel aus? Wie komme ich auf meinen "Buchstaben"? (siehe Beispiel)
Sorry, aber ich stehe echt auf dem Schlauch.
Gruss
Nimzo

Anzeige
Für dein Bsp könnte die Fml so ...
25.07.2013 19:39:41
Luc:-?
…aussehen, Nimzo:
=SVERWEIS(C1;A1:B9;2;UND(C1>=UGrz;C1 Das ginge, weil SVERWEIS hier entgg der HilfeAngabe nicht den Wert mit dem geringsten Abstand, sondern den nächstniedrigeren wählt. Es könnte hier aber evtl zum Problem wdn, falls der Wert mal nicht zwischen den Schranken liegt und trotzdem nicht in der Liste existiert. Dann ergäbe das UND-Konstrukt FALSCH und damit SVERWEIS #NV. Dazu müsstest du dir ggf noch etwas überlegen.
Ansonsten hängt die Fml auch davon ab, ob die Schranken nur jeweils einen Wert oder mehrere korrespondierende umfassen.
Gruß Luc :-?

Anzeige
AW: Für dein Bsp könnte die Fml so ...
25.07.2013 20:08:20
Nimzo
Hallo Luc:-?
Danke. Aber leider hilft auch das nicht, da die zugehörigen Werte ebenso wie die Schranke nicht in einem Tabellenblatt stehen können. Ich sehe schon. Ich komme wohl nicht darum, das doch irgendwie auf die Tabelle zu bekommen.
Ich hatte gehofft, ich könnte das in einem Modul irgendwie als Array definieren oder sowas :)
Aber egal. Man kann eben nicht immer alles haben.
Viele Grüsse
Nimzo

Verstehe ich nicht! Entweder generell nicht ...
25.07.2013 20:29:07
Luc:-?
…irgendwie in einer Mappe, Nimzo,
oder doch, aber nur nicht unbedingt sichtbar. Du kannst diese Namen nämlich auch verbergen.
Ansonsten musst du wohl mit einer VerweisDatei, in der die Beschrankung wertmäßig enthalten ist, oder einem AddIn, dass die Namenswerte bei Mappenstart einsetzt und bei -schließen wieder löscht oder generell mit VBA-AddIn arbeiten.
Mit einem in einem Modul der Mappe definierten Datenfeld könntest du mit ZellFmln auch nur über Namen arbeiten. Außerdem stünden die Schrankenwerte dann auch in der Mappe. Also ein fast unlösbarer (Interessens-)Konflikt… ;->
Luc :-?

Anzeige
AW: Verstehe ich nicht! Entweder generell nicht ...
25.07.2013 20:57:29
Nimzo
Hallo Luc :-?
Also, es sollte so sein:
ich möchte eine function schreiben, die ganz grob so aussieht
function vlook(value as integer)
vlook = application.worksheetfunction.vlookup(value, array_schranke, array_partner)
Dabei soll value eine zelle in der tabelle sein.
Das "Mapping" würde ich gerne als Konstante (z.b.) im Makro festlegen.
So in der Art
Viele Grüsse
Nimzo

Und diese Fkt (UDF) soll dann wo ...
25.07.2013 22:45:47
Luc:-?
…eingesetzt wdn, Nimzo;
in einer ZellFml → dann hättest du das gleiche Problem wie bisher, nur stünden die Schranken jetzt im vbPgmCode und wären uU für einigermaßen Kundige auch bei Projektschutz einsehbar (Mappe muss idR nur in LO/OOcalc geöffnet wdn!). Versteckte Namen können Kundige allerdings auch finden.
Da müsstest du schon mit einem AddIn (besser COM-AddIn) arbeiten oder Crunch-Code (Obfuskation) u/o Kryptisierung verwenden, was das unbefugte Auslesen zumindest stark erschwert. Ggf könnten auch verborgene FormObjekte eingesetzt wdn, auf denen bzw in deren Eigenschaften die Schrankenwerte (kryptisiert) notiert sind. Dann sollte aber auch der Zugriff auf diese Objekte kryptisiert und außerdem das Anhalten des Codes verunmöglicht wdn. Vielleicht reicht das dann schon als Sicherheit. Also 'ne Menge Stoff für dein VBA-Level! ;-)
Luc :-?

Anzeige
AW: Und diese Fkt (UDF) soll dann wo ...
25.07.2013 23:07:04
Nimzo
Hallo Luc :-?
Es geht dabei nicht um Schutz vor Neugierigen Augen, sondern darum, die Daten nicht in einer Tabelle ablegen zu müssen. Das hat Organisatorische Gründe, optische Gründe, alt eingesessene "komische" Teamregeln usw.
Gruss
Nimzo

Tja, dann bleibt ja wohl nur noch die Frage, ...
26.07.2013 00:17:40
Luc:-?
…Nimzo,
unter welchen Bedingungen die Schrankenwerte als in einer Tabelle abgelegt gelten. Streng genommen wäre das sowohl bei (unsichtbaren) definierten Namen bzw (dito) FormObjekten als auch (geschütztem) VBA-PgmCode mit Schrankenwerte-Array der Fall. Da solltest du dich erst mal kundig machen…
GuN8, Luc :-?

Anzeige
AW: Tja, dann bleibt ja wohl nur noch die Frage, ...
26.07.2013 07:18:30
Nimzo
Moin Luc :-?
alles was nicht direkt auf einem Tabellenblatt steht ist ok. (also weder die Schranke noch der Ergebniswert.) Lediglich der Abfragewert darf als Wert in einer Zelle stehen.
Gruss
Nimzo

Na dann würde ich doch so etwas wie eine ...
26.07.2013 12:22:27
Luc:-?
…Lupe vorschlagen, Nimzo;
du wählst die Zelle mit dem Abfragewert aus und ein Feld mit dem Ergebnis erscheint, entweder nur kurz oder auch solange, bis es weggeklickt wird.
Gruß Luc :-?

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige