Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

vba; benutzerdefinierter SVERWEIS





Frage

Salvete, ich möchte per VBA die Funktion SVERWEIS so abkürzen, dass nur zwei Werte abgefragt werden müssen, nämlich Suchkriterium und Spaltenindex. Die Eingabe/Markierung der Matrix soll entfallen und als statischer Wert beigestellt werden. Letztlich soll also über "Funktion einfügen" ein Dialog erscheinen, in welchem per Klick die Zelle mit einem Datum als Suchkriterium und eine Zelle mit einem String für den Spaltenindex ausgewählt werden. Beispiel: in Test!A10 steht ein Datum "10.10.2000" in Test!B10 steht eine Zahl n In Test!C10 soll die gewünschte benutzerdefinierte Funktion, mit der A10 und B10 abgefragt werden. Die Matrix ist immer Daten!E4:K100 Der Wert soll wie mit SVERWEIS ermittelt werden, also =SVERWEIS(Test!A10;Daten!E4:K100;TEST!B10;FALSCH) Test!B10 ist tatsächlich keine Zahl, sondern ein Name, dem ich über einen weiteren SVERWEIS eine Zahl zuordnen will, aber erstmal die Grundvariante. Also: Public Function FixUndFoxi(Suchwert1 As String, Suchwert2 As Integer) As String ?? Bereich = Worksheets("Daten").Range("E4:K100") ... FixUndFoxi = ... End Function Danke mfg schnallgonz

Antwort 1 von rainberg

Hallo schnallgonz,

meinst Du so?

Option Explicit

Public Function FixUndFoxi(lngSuchwert As Long, intSpalte As Integer)
    Dim rngBereich As Range
    Set rngBereich = Worksheets("Daten").Range("E4:K100")
    FixUndFoxi = WorksheetFunction.VLookup(lngSuchwert, rngBereich, intSpalte, False)
End Function


Aufruf: =FixUndFoxi(A10;B10)

Gruß
Rainer

Antwort 2 von schnallgonz

Moin Rainer,
Zitat:
meinst Du so?

Genau, juchhu, super, vielen DANK!!

Habe es gleich umgesetzt mit einem weiteren VLookup,
funktioniert wunderbar.

Weißt Du auch, wie man eine kurze Erläuterung in den Funktionsdialog bekommt, mit der lngSuchwert und intSpalte beschrieben werden können (wie bei den Standardfunktionen)?

mfg
gert

Antwort 3 von schnallgonz

Hi,
ich habe gerade entdeckt, wie man über <<Ansicht Objektkatalog>>
zumindest eine Beschreibung der Funktion erstellen kann.

Hinweise zu den Parametern sind damit zwar nicht möglich, aber mit einem anderen Namen anstatt z.B. "lngSuchwert" sieht das im Funktionsdialog für Dritte auch so schon ganz verständlich aus.

Falls jemand in Sachen ParameterInfo im Funktionsdialog noch etwas aus dem Ärmel schütteln kann, sehr gerne.

Es geht aber auch ohne.

Nochmal vielen Dank an Rainer für die schnelle und goldrichtige Hilfe.

mfg
gert

Antwort 4 von rainberg

Hallo Gert,

Zitat:
Weißt Du auch, wie man eine kurze Erläuterung in den Funktionsdialog bekommt, mit der lngSuchwert und intSpalte beschrieben werden können (wie bei den Standardfunktionen)?


da kann ich Dir nicht helfen, verstehe nicht so recht, was Du meinst!?

lngSuchwert und intSpalte sind doch ganz normale Variable, die ich auf meine Weise kenntlich gemacht habe um in einem längeren Code immer gleich die Art der Variable zu erkennen.

Ich benutze dabei immer die ersten 3 Buchstaben der Variablenart,
lng = Long, Int=Integer, dbl=Double usw., gefolgt vom Variabennamen, den ich der Kenntlichkeit haber immer mit einem Großbuchstaben beginnen lasse.

Das ist aber kein Muss, sondern nur eine persönliche Art, sich das Leben zu erleichtern (oder aber durch die entstehende Mehrarbeit zu erschweren).

Gruß
Rainer

Antwort 5 von schnallgonz

Hallo Rainer,
Zitat:
lngSuchwert und intSpalte sind doch ganz normale Variable, die ich auf meine Weise kenntlich gemacht habe um in einem längeren Code immer gleich die Art der Variable zu erkennen.

Ist klar und sinnvoll.
Was ich meine, ist der Dialog beim Aufruf der Funktion.
Bei den Standardfunktionen erscheint unterhalb der Eingabefelder ein kurzer Hinweis zur jeweils aktiven Variablenabfrage.

Beispiel SVERWEIS mit folgenden Eingabefeldern
Suchkriterium
Matrix
Spaltenindex
Bereich_Verweis

rechts davon steht in weißer Schrift
bei Suchkriterium "beliebig"
bei Matrix "Zahl" usw

Ist das Eingabefeld von Suchkriterium aktiv, erscheint unten zusätzlich der Hinweis:
"Suchkriterium ist der Wert, nach dem Sie in der ersten Spalte der Matrix suchen."
usw für jedes Eingabefeld

Ähnliches wäre für eine benutzerdefinierte Funktion auch sehr nützlich.
So aber steht lediglich intSpalte unter lngSuchwert, keine Erläuterungen dazu, ist für Dritte schwierig, wenn Sie es nicht gezeigt bekommen....und nach einer Woche ist alles vergessen .

Ich habe mir mit o.g. Funktionhinweis geholfen, der im Dialog erscheint. Dazu habe statt lngSuchwert DatWert als Variablen-Bezeichnung verwendet, diese Namen erscheinen ja im Funktionsdialog.

Ich hoffe, ich habe meinen Wunsch verständlich beschrieben.
Dein Code-Vorschlag ist super und mit den Hinweisen ist die jetzige Situation vollkommen zufriedenstellend.
Ich verwende derzeit noch Excel97, vielleicht sind solche Komfortlösungen dort gar nicht möglich.

nochmals Danke
mfg
Gert

Antwort 6 von rainberg

Hallo Gert,

trotz Hitze hab ich's jetzt begriffen.

Leider kann ich Dir da nicht helfen, so weit bin ich in dieser Materie auch noch nicht vor gedrungen.
Ich bin aber fast sicher, das sowas möglich sein sollte.

Gruß
Rainer

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: