Thema Datum  Von Nutzer Rating
Antwort
09.10.2020 08:18:45 Max
NotSolved
09.10.2020 08:27:48 Gast80470
NotSolved
09.10.2020 09:27:23 Gast5565
NotSolved
Blau Aggregat-Funktion in VBA
09.10.2020 13:08:35 Gast5238
****
NotSolved
09.10.2020 13:10:33 Gast5238
**
NotSolved
09.10.2020 13:44:55 Gast92309
****
NotSolved
12.10.2020 11:28:36 Gast77683
Solved
12.10.2020 12:14:51 Gast70767
NotSolved

Ansicht des Beitrags:
Von:
Gast5238
Datum:
09.10.2020 13:08:35
Views:
532
Rating: Antwort:
  Ja
Thema:
Aggregat-Funktion in VBA

Wenns per Formel sein soll, würde ich anders machen:

Option Explicit

Sub Test()
  
  Dim rng As Excel.Range
  Dim vntResult As Variant
  Dim vntVal As Variant
  
  With Worksheets("Tabelle1")
    
    'Zellen mit Suchkriterien benennen
    Range("F2").Name = "_search_cat"
    Range("G2").Name = "_search_sect"
    
    'Spalten A-C benennen
    For Each vntVal In Array(Array("A2", "_section"), Array("B2", "_category"), Array("C2", "_notes"))
      'Daten-Bereich ermitteln
      With .Range(vntVal(0), .Cells(.Rows.Count, .Range(vntVal(0)).Column).End(xlUp))
        If .Row < .Worksheet.Range(vntVal(0)).Row Then
          'wir sind bei der Suche außerhalb der oberen Grenze gelandet
          Call MsgBox("Keine Daten in Spalte " & .Range(vntVal(0)).EntireColumn.Address, vbExclamation)
          Exit Sub
        End If
        'Bereich benennen
        .Name = vntVal(1)
      End With
    Next
    
    'Filtern nach 2 Kriterien - einfach gemacht :)
    vntResult = "=FILTER( _notes, " & _
                      "ISNUMBER( MATCH( _search_cat, _category, 0) ) " & _
                    "* ISNUMBER( MATCH( _search_sect, _section, 0) ) " & _
                    ")"
    
    '~uuuund filtern!
    vntResult = .Evaluate(vntResult)
    
    If IsError(vntResult) Then
      Call MsgBox("Wooops. :(", vbCritical)
    Else
      
      'Ausgabe im Direktbereich/-fenster (ggf. einblenden mit STRG+G)
      Debug.Print "[FILTER_ERGEBNIS]"
      Debug.Print "FILTER: {Bereich: '" & CStr(.Range("_search_sect")) & "'} {Kategorie: '" & CStr(.Range("_search_cat")) & "'}"
      Debug.Print String(15, "-")
      
      For Each vntVal In vntResult
        Debug.Print vntVal
      Next
'      Dim i As Long
'      For i = LBound(vntResult) To UBound(vntResult)
'        Debug.Print vntResult(i, 1)
'      Next
      
      Debug.Print String(15, "-")
      
    End If
    
  End With
  
  
End Sub

 


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
09.10.2020 08:18:45 Max
NotSolved
09.10.2020 08:27:48 Gast80470
NotSolved
09.10.2020 09:27:23 Gast5565
NotSolved
Blau Aggregat-Funktion in VBA
09.10.2020 13:08:35 Gast5238
****
NotSolved
09.10.2020 13:10:33 Gast5238
**
NotSolved
09.10.2020 13:44:55 Gast92309
****
NotSolved
12.10.2020 11:28:36 Gast77683
Solved
12.10.2020 12:14:51 Gast70767
NotSolved