Thema Datum  Von Nutzer Rating
Antwort
10.12.2015 04:06:03 idefix
Solved
Blau INDEX, VERGLEICH mit Funktion vereinfachen
10.12.2015 13:33:55 Gast83765
*****
NotSolved
10.12.2015 17:03:25 idefix
NotSolved
14.12.2015 17:15:10 Gast83765
NotSolved
14.12.2015 16:16:15 idefix
NotSolved
14.12.2015 17:22:49 Gast83765
NotSolved
14.12.2015 17:25:07 Gast83765
NotSolved
14.12.2015 17:30:34 Gast67887
NotSolved
14.12.2015 18:14:33 idefix
NotSolved

Ansicht des Beitrags:
Von:
Gast83765
Datum:
10.12.2015 13:33:55
Views:
991
Rating: Antwort:
  Ja
Thema:
INDEX, VERGLEICH mit Funktion vereinfachen
Option Explicit

'UDF (User Defined Function)
Public Function getTableVal(Table As Variant, Key As Variant, FieldName As Variant) As Variant
  
  Dim rngData     As Excel.Range
  Dim strFormula  As String
  Dim vntResult   As Variant
  
  If Not IsObject(Table) Then
    getTableVal = CVErr(XlCVError.xlErrRef)
    'Anm.: Man könnte an dieser Stelle auch noch eine Lösung für
    '      2D-Datenfelder implementieren.
    '
  ElseIf TypeOf Table Is Excel.Range Then
    
    'Datenbereich refrenzieren
    'Simplerweise gehen wir hier davon aus, dass die Kopfzeile nur eine Zeile beansprucht,
    'und jene wird hier ausgeschlossen.
    Set rngData = Table.Resize(Table.Rows.Count - 1).Offset(1)
    
    strFormula = "=INDEX(%TABLE%,MATCH(%KEY%,%KEYS%,0)+1,MATCH(""%FIELD%"",%FIELDS%,0))"
    strFormula = Replace$(strFormula, "%TABLE%", Table.Address(External:=True))
    strFormula = Replace$(strFormula, "%KEY%", Trim$(Key))
    strFormula = Replace$(strFormula, "%FIELD%", Trim$(FieldName))
    strFormula = Replace$(strFormula, "%KEYS%", rngData.Columns(1).Address(External:=True))
    strFormula = Replace$(strFormula, "%FIELDS%", rngData.Rows(1).Offset(-1).Address(External:=True))
    
    On Error Resume Next
    'Debug.Print "Formula :" & strFormula
    vntResult = Application.Evaluate(strFormula)
    On Error GoTo 0
    
    getTableVal = vntResult
    
  Else
    getTableVal = CVErr(XlCVError.xlErrRef)
    Exit Function
  End If
  
End Function

Die UDF kann übrigens nicht get heißen, da dies ein reserviertes Schlüsselwort in VBA ist.

 

Gruß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
10.12.2015 04:06:03 idefix
Solved
Blau INDEX, VERGLEICH mit Funktion vereinfachen
10.12.2015 13:33:55 Gast83765
*****
NotSolved
10.12.2015 17:03:25 idefix
NotSolved
14.12.2015 17:15:10 Gast83765
NotSolved
14.12.2015 16:16:15 idefix
NotSolved
14.12.2015 17:22:49 Gast83765
NotSolved
14.12.2015 17:25:07 Gast83765
NotSolved
14.12.2015 17:30:34 Gast67887
NotSolved
14.12.2015 18:14:33 idefix
NotSolved