MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 16.07.2018, 11:00   #1
Hias
MOF User
MOF User
Top VBA - Wert aus Zelle splitten und anschließend zum Filtern weiterverwenden

Hallo,

ich habe eine Excel Liste mit drei Spalten (Bezeichnung/Gehe zu/Filteroptionen). In der Spalte "Gehe zu" möchte ich in jeder Zeile einen CmdButton setzen. Der Button soll den Wert aus der Spalte "Filteroptionen" auslesen, in splitten (Inhalt ist immer mit einem Leerzeichen getrennt), zu einem anderen Blatt wechseln, und dort immer in der gleichen Spalten nach dem Inhalt filtern.


Ich habe es bereits geschafft den Inhalt auszulesen und zu filtern. Aber ich weiß noch nicht wie ich es splitten soll und wie ich dann den Wert oder die Werte in meinem Mehrfachfilter setzen soll.

Manchmal befindet sich in der Spalte "Filteroptionen" ein Kriterium, manchmal sind es bis zu 10.

Hier mein Ansatz:



Code:

Sub ButtonOffsetRight()

Dim Inhalt As String
Dim InhaltmitStern As String
Dim b As Button
    
    
   Set b = ActiveSheet.Buttons(Application.Caller)

   Inhalt = b.BottomRightCell.Offset(0, 1)
    
   InhaltmitStern = "*" & Inhalt & "*"
  
'Wechsle zu Blatt
Sheets("Liste").Select

'Entferne alle gesetzten Filter
    With ActiveSheet
   If .AutoFilterMode Then
     For Each af In .AutoFilter.Filters
       If af.On Then
         .ShowAllData
         Exit For
       End If
     Next
   End If
 End With

'Neue Filter
       ActiveSheet.Range("$A$5:$AM$1500").AutoFilter Field:=13, Criteria1:=Array( _
        ????), Operator:=xlFilterValues

  

End Sub

Ich hoffe ich habe mich verständlich ausgedrückt.

Wäre für Hilfe sehr dankbar.

Grüße
Hias

__________________

________________________________________________________________________________ _______________________________________________________________
Betriebssystem: Windows 7
MS-Office 2016
Hias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.07.2018, 12:22   #2
EarlFred
MOF Guru
MOF Guru
Standard

Hallo Hias,

bei mehr als 2 Filterkriterien kannst Du aber nicht mehr mit Wildcard suchen.

Habe ein wenig im Code rumeditiert. Schau mal drauf.

Code:

Option Explicit

Sub ButtonOffsetRight()

Dim Inhalt As String
Dim InhaltmitStern As String
Dim b As Button
Dim fVarFilter As Variant
    
'Set b = ActiveSheet.Buttons(Application.Caller)

Inhalt = Range("A1").Value ' b.BottomRightCell.Offset(0, 1)
fVarFilter = Split(Inhalt, ",")

'InhaltmitStern = "*" & Inhalt & "*"
  
'Wechsle zu Blatt
Worksheets("Liste").Select

'Entferne alle gesetzten Filter
With ActiveSheet
  If .AutoFilterMode Then
    If .FilterMode Then
      .ShowAllData
    End If
  End If
End With

'Neue Filter
ActiveSheet.Range("$A$5:$AM$1500").AutoFilter Field:=13, Criteria1:=fVarFilter, Operator:=xlFilterValues
 

End Sub
Grüße
EarlFred

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.07.2018, 13:05   #3
Hias
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo EarlFred,

vielen Dank für die schnelle Hilfe!

Eins habe ich in der Angabe vergessen:

Jeder Einzelstring im Array soll zwischen zwei * sein, so dass es möglich ist, aus der Spalte 13 einzelne Teilwörter zu filtern.

Grüße Hias

__________________

________________________________________________________________________________ _______________________________________________________________
Betriebssystem: Windows 7
MS-Office 2016
Hias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.07.2018, 13:21   #4
EarlFred
MOF Guru
MOF Guru
Standard

Zitat:

Jeder Einzelstring im Array soll zwischen zwei * sein, so dass es möglich ist, aus der Spalte 13 einzelne Teilwörter zu filtern.

richte den Filter genau so mal von Hand ein und schicke die Aufzeichnung des Makrorekorders.

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.07.2018, 14:15   #5
Hias
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo EarlFred,

das schaffe ich leider manuell nicht. Ich habe gehofft es per VBA machbar zu machen.

Anbei mal eine Excel-File, wo das Problem vielleicht etwas verständlicher ist.

Wenn man zum Beispiel nach "Rot Lila" filtert, werden nur zwei Zeilen angezeigt. Ich möchte aber jede Zeile anzeigen lassen, wo sich in Spalte 13 "Rot" oder "Lila" befindet.


Viele Grüße
Hias
Angehängte Dateien
Dateityp: xlsm vba_Mehrfachfilter.xlsm (30,1 KB, 4x aufgerufen)

__________________

________________________________________________________________________________ _______________________________________________________________
Betriebssystem: Windows 7
MS-Office 2016
Hias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.07.2018, 14:29   #6
EarlFred
MOF Guru
MOF Guru
Standard

Hallo Hias,

Zitat:

das schaffe ich leider manuell nicht. Ich habe gehofft es per VBA machbar zu machen.

warum sollte die gleiche Methode, nur weil Du sie mit VBA ansteuerst, auf einmal mehr können?
(Spontan fällt mir nur eine einzige Ausnahme ein, wo man mit VBA einen im normalen Menü nicht erreichbaren Schalter setzen kann)

Und genau aus diesem Grund schrieb ich:

Zitat:

bei mehr als 2 Filterkriterien kannst Du aber nicht mehr mit Wildcard suchen.

Ich habe wirklich nicht viel geschrieben, in der Hoffnung, dass wenigstens das dann auch gelesen wird.

Das, was Du willst, kann der Filter/erweitert (aka Spezialfilter). Führe hierzu erst eine Selbstrecherche durch und komm wieder, wenn Du nicht weiterkommst.

Grüße
EarlFred

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.07.2018, 07:51   #7
Hias
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo EarlFred,

ich wusste nichts von dieser Filtermöglichkeit. Meine Kenntnisse sind nicht so gut, ich wusste ebenfalls nicht, was du mit "Wildcard" meintest.
Jedenfalls habe ich das Makro aufgenommen. Ich weiß aber nicht wie ich mein Array mit Kriterien in diesen Filter hineinbringe?

Ich will ja die Autofilter nicht löschen (die Funktion wird noch sehr oft von anderen manuell benutzt), noch will ich an einer anderen Stelle die Tabelle mit Kriterien kopieren.

Code:

Option Explicit

Sub ButtonOffsetRight()

Dim Inhalt As String
Dim InhaltmitStern As String
Dim b As Button
Dim fVarFilter As Variant
    
Set b = ActiveSheet.Buttons(Application.Caller)

Inhalt = b.BottomRightCell.Offset(0, 1)
fVarFilter = Split(Inhalt, " ")

  
'Wechsle zu Blatt
Worksheets("Liste").Select

'Entferne alle gesetzten Filter
With ActiveSheet
  'Prüfen ob Auto Filter aktiviert - wenn ja dann Aus
  If .AutoFilterMode Then
    If .FilterMode Then
      .ShowAllData
    End If
  End If
   'Prüfen ob Spezial Filter aktiviert - wenn ja dann Aus
'  If .AdvancedFilterMode Then
'     If .FilterMode Then
'       .ShowAllData
'     End If
'  End If
End With


'Neue Filter
'Spezialfilter
    ActiveSheet.Range("$A$5:$AM$1500").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        fVarFilter, Unique:=False
        
'Aufgezeichnetes Makro
'        Range("A4:M18").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
'    Range("A19:M20"), Unique:=False
        
        
'Standard-Filter
'ActiveSheet.Range("$A$5:$AM$1500").AutoFilter Field:=13, Criteria1:=fVarFilter, Operator:=xlFilterValues
 

End Sub
Wäre für Hilfe sehr dankbar!

Grüße Hias

__________________

________________________________________________________________________________ _______________________________________________________________
Betriebssystem: Windows 7
MS-Office 2016
Hias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.07.2018, 09:31   #8
EarlFred
MOF Guru
MOF Guru
Standard

Zitat:

ich wusste ebenfalls nicht, was du mit "Wildcard" meintest.

es ist doch nicht schlimm, etwas nicht zu wissen, aber es einfach zu ignorieren, weil man nichts mit anfangen kann, ist doch nicht zielführend.
Oder habe ich Deine Rückfrage dazu überlesen?

Der Spezialfilter erwartet die Filterkriterien in einem Bereich im Arbeitsblatt.

Mach Dir doch einfach eine Hilfsspalte, in der Du die Übereinstimmung prüfst und beziehe diesen in den Filter ein:

Formel für Hilfsspalte:
Code:

{=MAX(WENNFEHLER(FINDEN(MTRANS(Liste);A2);0))}
Matrixfunktion - Eingabe mit Strg+Shift+Enter abschließen!
Namen definieren:
Code:

Liste:=$E$1:INDEX($E:$E;MAX(1;ANZAHL2($E:$E)))

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.07.2018, 15:58   #9
Hias
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo EarlFred,

Danke. Ich werde es ausprobieren. Allerdings komme ich erst in ein paar Tagen dazu..

Ich melde mich wieder!

Grüße
Hias

__________________

________________________________________________________________________________ _______________________________________________________________
Betriebssystem: Windows 7
MS-Office 2016
Hias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.