Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1020to1024
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
Inhaltsverzeichnis

SVWERWEIS einzelne Fundstellen mit Parameter

SVWERWEIS einzelne Fundstellen mit Parameter
03.11.2008 15:20:00
lobby007
Hallo,
ich habe eine Funktion die mir alle Funstellen wie bei einem SVerweis hintereinander auflistet:

Function LJVERWEISt(strName As String, rngBereich As Range) As Variant
Dim rngAct As Range
Dim strErgebnis As String
Application.Volatile
For Each rngAct In rngBereich.Columns(1).Cells
If rngAct = strName Then
strErgebnis = strErgebnis & rngAct.Offset(0, 1) & ", "
End If
Next rngAct
LJVERWEISt = Left(strErgebnis, Len(strErgebnis))
End Function


Jetzt wäre es für mich viel besser, wenn ich der Funktion sagen könnte: nimm den ersten Treffer, den zweiten....., d.h. ein Parameter in der Funktion steuert der wievielte Treffer ausgegeben wird.
Heute sind die Parameter: 1. Suchkriterium 2. Bereich und in Zukunft sollte der 3. die Anzahl der Fundstelle sein.
Wer weiß Rat?
Vielen Dank, Gruß Lobby007

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVWERWEIS einzelne Fundstellen mit Parameter
03.11.2008 15:36:28
Rudi
Hallo,

Function LJVERWEISt(strName As String, rngBereich As Range, iWelcher As Integer) As Variant
Dim rngAct As Range, arrFound
Dim strErgebnis As String
Application.Volatile
For Each rngAct In rngBereich.Columns(1).Cells
If rngAct = strName Then
strErgebnis = strErgebnis & rngAct.Offset(0, 1) & ","
End If
Next rngAct
arrFound = Split(strErgebnis, ",")
LJVERWEISt = arrFound(Application.Min(iWelcher - 1, UBound(arrFound) - 1))
End Function


Gruß
Rudi

AW: SVWERWEIS einzelne Fundstellen mit Parameter
03.11.2008 15:47:00
lobby007
Hallo Rudi,
wunderbar, das klappt wie verrückt.
Wie es immer so ist, habe ich noch eine Frage: Wenn ich jetzt 5 Fundstellen habe und die 6 als Parameter eingebe dann gibt er mir den gleichen Treffer wie bei Fundstelle 5.
Bekommt man das noch weg? Am besten wäre, wenn er dann 0, "" oder so was liefern würde.
Vielen Dank aber schon mal für die Lösung
Liebe Grüße aus Hamburg
lobby
Anzeige
AW: SVWERWEIS einzelne Fundstellen mit Parameter
04.11.2008 19:29:26
Erich
Hi,
probier mal

Function LJVERWEISt(strName As String, rngBereich As Range, iWelcher As Integer)
Dim rngAct As Range, intAnz As Long
Application.Volatile
LJVERWEISt = "0, """" oder so was"
For Each rngAct In rngBereich.Columns(1).Cells
If rngAct = strName Then
intAnz = intAnz + 1
If intAnz = iWelcher Then
LJVERWEISt = rngAct.Offset(0, 1)
Exit Function
End If
End If
Next rngAct
End Function

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: SVWERWEIS einzelne Fundstellen mit Parameter
04.11.2008 19:31:18
Erich
Hi,
sorry, statt "intAnz As Long" wäre besser gewesen "intAnz As Integer".
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: und noch ne Variante...
04.11.2008 19:53:20
Erich
Hi,
"kein Treffer" oder so muss ja nur dann zugewiesen werden, wenn es den richtigen Treffer nicht gab.
Also eine neue Version, zudem etwas kürzer:

Function LJVERWEISt(strName As String, rngBereich As Range, iNr As Long)
Dim rngC As Range, lngN As Long
Application.Volatile
For Each rngC In rngBereich.Columns(1).Cells
If rngC = strName Then
lngN = lngN + 1
If lngN = iNr Then LJVERWEISt = rngC.Offset(0, 1): Exit Function
End If
Next rngC
LJVERWEISt = "kein Treffer"
End Function

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: und noch ne Variante...
05.11.2008 08:48:00
lobby007
Hallo Erich,
sorry bin leider erst jetzt wieder am Rechner gewesen.
Habe nur die letzte Lösung ausprobiert aber die ist auch wirklich perfekt - habe ich gleich verbaut, dass spart mir eine Wenn-Orgie um die doppelten rauszufiltern.
Vielen Dank und noch einen schönen Tag.
Gruß aus Hamburg lobby

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige