vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: VBA Allgemein   |   VB-Versionen: VBA10.04.15
VBA-Funktionen #1, bestimmte Funktionen zur Array-Verwendung

Der Tipp zeigt mehrere einfache Funktionen, die bei der Verwendung von Arrays benutzt werden können.

Autor:   Dietrich HerrmannBewertung:  Views:  8.712 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein Beispielprojekt 

In diesem Beitrag zeige ich verschiedene Funktionen zur Verwendung bei der Nutzung von Arrays.Nachfolgende Funktionen sind gewissermaßen Bestandteil von auf diesen Tipp folgenden weiteren Tipps. Ich zeige sie sozusagen im Voraus. Die Funktionen sind ziemlich selbsterklärend bei der Beschreibeung ihrer Parameter.

' Nachbildung der Verweisfunktion aus Excel
' Suchkriterium: der Wert, der in einem Feld gesucht wird
' Suchvektor: das Feld, in dem der Wert gesucht wird
' Ergebnisvektor: das Feld, in dem die positionsbezogenen Rückgabewerte 
'                 enthalten sind
' Rückgabe: der Wert, der aus dem Ergebnisfeld ermittelt wurde
Public Function VerweisFKT(Suchkriterium As Variant, _
  Suchvektor As Variant, _
  Ergebnisvektor As Variant) As Variant
 
  VerweisFKT = Ergebnisvektor(caIndexOf(Suchvektor, Suchkriterium))
End Function
' Zirka Index
' theArray: das Feld, in dem der Wert gesucht werden soll
' v: der Wert, der gesucht werden soll (zwischen zwei Werten liegend)
' Rückgabe: der \"ungefähre\" Index des Werts im Feld
Private Function caIndexOf(theArray As Variant, v As Variant) As Integer
  Dim i As Integer
  For i = 1 To UBound(theArray) - 1
    If v >= theArray(i - 1) And v < theArray(i) Then
      caIndexOf = i - 1
      Exit For
    End If
  Next 
End Function
' Suchkriterium: der Wert, nach dem summiert werden soll
' Bereich: das Feld, in dem der Wert, eventuell mehrfach) enthalten ist
' SummeBereich: das Feld mit den zu summierenden Werten, 
'               positionsbezogen zu Bereich
' Rückgabe: die ermittelte Summe
Public Function SummeWenn(Suchkriterium As Variant, _
  Bereich As Variant, _
  SummeBereich As Variant) As Variant
 
  Dim i As Integer, j As Integer, summe As Single
  For i = 0 To UBound(Bereich) - 1
    j = indexOfArr(Bereich, Suchkriterium, j + 1)
    If j <= 0 Then Exit For
    summe = summe + SummeBereich(j)
  Next 
  SummeWenn = summe
End Function
' Nachbildung der ZählenWenn-Funktion aus Excel
' Suchkriterium: der Wert, der gezählt werden soll
' Suchvektor: das Feld, in dem der Wert gesucht werden soll
' Rückgabe: die ermittelte Anzahl
Public Function ZaehlenWenn(Suchkriterium As Variant, _
  Suchvektor As Variant) As Variant
  Dim i As Integer, j As Integer, zahl As Integer
 
  For i = 0 To UBound(Suchvektor) - 1
    j = indexOfArr(Suchvektor, Suchkriterium, j + 1)
    If j <= 0 Then Exit For
    zahl = zahl + 1
  Next 
  ZaehlenWenn = zahl
End Function
' Ermitteln des Index eines Feldelements
' theArray: das Feld
' v: der Wert, dessen Position im Feld gesucht wird
' begI: Feldindex, bei dem mit der Suche begonnen werden soll
' Rückgabe: der Index des Wertes im Feld
Public Function indexOfArr(theArray As Variant, v As Variant, _
  Optional begI As Integer) As Integer
 
  Dim i As Integer
 
  indexOfArr = -1
  If IsMissing(begI) Then begI = 0
  For i = begI To UBound(theArray) - 1
    If theArray(i) = v Then
      indexOfArr = i
      Exit For
    End If
  Next i
End Function
' Prüfen, ob ein Wert in einem Array enthalten ist
' theArray: das Feld in dem gesucht wird
' valueToFind: der zu suchende Wert
' comp: Vergleichsoperator (binary, text)
Public Function IsInArray(theArray As Variant, valueToFind As Variant, _
  Optional comp As Integer = 1) As Boolean
 
  IsInArray = (UBound(Filter(theArray, valueToFind, , comp)) > -1)
End Function



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.