Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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

Bitte um Makro !!!

Bitte um Makro !!!
Isolde
Hallo Makro Profis,
ich habe eine Excel-Tabelle mit sehr vielen Spalten welche ganz normal über den Auto-Filter sortiert werden sollen.
Speziell für die Teilenummer besteht dabei die Möglichkeit diese nach drei Gruppen aufgespaltet zu filtern oder als ganzes zu filtern – siehe Beispieltabelle:

https://www.herber.de/bbs/user/71961.xls
Es geht hier speziell um die Filterergebnisse von Spalte D:
Wenn man in Spalte D z.B. nach der Endnummer „105“ filtert, dann soll Excel auch diejenigen herausfiltern bzw. anzeigen, welche als Endnummer 105 enthalten, also auch 105/106. Da Excel nun zur 105 ebenso die 105/106 gefunden hat und diese zusammen gehören, sollen ebenso die mit der Endnummer 106 angezeigt werden.
Das Filterergebnis in Spalte D wäre also: 105 und ggf. 105/106 und 106.
106 darf Excel natürlich nur anzeigen wenn die Zahl in Verbindung mit der 105 auftaucht (105/106). Wenn ihr in Spalte D z.B. in der Auswahl von der bereits von Tino programmierten Combo-Box z.B. 105 eingebt, wird bereits die richtige Auswahl getroffen, diese Arbeit ist also schon erledigt!!!
Das Problem ist nur, dass mir die derzeitige Art und Weise dieses Programmierten Filters nicht passt.
Den folgenden Code habe ich in einem Forum gefunden: (http://www.supportnet.de/fresh/2006/5/id1339399.asp)
Es ist ein Code, der automatisch nach dem Zellinhalt der aktiven Zelle filtert. Er berücksichtigt bereits die anderen Filtereinstellungen (was ich ganz toll finde) jetzt müsste wie gesagt nur noch Tinos Code integriert werden –ohne Combo-Box.

Sub FilterSchnell()
Dim SpNr As Integer
Dim Such As String
AutoFilterMode = False
SpNr = ActiveCell.Column
Such = ActiveCell.Value
Selection.AutoFilter Field:=SpNr, Criteria1:=Such, Operator:=xlAnd
End Sub

Ziel soll es nun sein, den von Tino programmierten Code aus der Combo-Box in das soeben gezeigte Makro zu integrieren.
Soll heißen:
Der normale Autofilter in Spalte D wurde aktiviert. Jetzt klickt man in Spalte D ab Zeile 4 abwärts (ab dort beginnen real die Eintragungen in meiner echten Tabelle) auf die z.B. ausgewählte 105 und anschließend aktiviert man z.B. über eine Schaltfläche das Makro, was nun für Spalte D unter Berücksichtigung der anderen Filtereinstellungen die richtige Anzeige bzw. Auswahl trifft, also dann auch die mit 105/106 und 106 anzeigt – also das macht was Tino in der Combo-Box programmiert hat (siehe Beispieltabelle)!
Das muss doch irgendwie möglich sein, oder?

Es ist mir sehr wichtig diese Lösung über ein normales Makro zu finden!!!
Bitte um Unterstützung!!!
LG Isolde

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bitte um Makro !!!
20.10.2010 06:52:47
fcs
Hallo Isolde,
sollte so funktionieren:
Sub FilterSchnell()
Dim SpNr As Integer
Dim Such As String
If ActiveSheet.AutoFilterMode = True Then
SpNr = ActiveCell.Column
Such = Trim(ActiveCell.Value)
Selection.AutoFilter Field:=SpNr, Criteria1:="=*" & Such & "*", _
Operator:=xlAnd, _
VisibleDropDown:=True
Else
MsgBox "Autofilter ist nicht aktiv"
End If
End Sub

Gruß
Franz
Kleine Korrektur noch notwendig !!!
20.10.2010 13:34:06
Isolde
Hallo Franz,
danke Dir…hätte nicht gedacht, dass das noch klappt.
Eine kleine Korrektur ist noch nötig. Es ist mein Fehler, denn mir ist erst nicht aufgefallen, dass Tino in der Combo-Box zwar einen Fehler beseitigt hatte, allerdings dafür ein anderer dazu gekommen ist.
BITTE lass es mich erklären, es lässt sich leider komplizierter ausdrücken als es zu verstehen ist.
Also Dein Makro ist Super, bis auf den Fehler welchen Du zwangsläufig übernommen hast.
Hier noch mal die Beispieltabelle (aber mit alter Combo-Box):
https://www.herber.de/bbs/user/71961.xls
Also, in Spalte D ist nach den folgenden Möglichkeiten zu filtern.
Wenn man z.B. nach der Nr 105 filtert und es wird auch eine Endnummer 105/106 gefunden, dann sollen die mit der Endnummer 105 und 105/106 und die mit der Endnummer 106 angezeigt werden.
Wird andererseits beispielsweise nach einer 115 gefiltert und es wird keine 115 in Verbindung mit einem Schrägstrich gefunden, dann sollen nur die mit der Endnummer 115 angezeigt werden, auch wenn es noch Endnummern mit der 116 gibt, weil es keine 115/116 gibt.

Dein Makro:
Sub FilterSchnell()
Dim SpNr As Integer
Dim Such As String
If ActiveSheet.AutoFilterMode = True Then
SpNr = ActiveCell.Column
Such = Trim(ActiveCell.Value)
Selection.AutoFilter Field:=SpNr, Criteria1:="=*" & Such & "*", _
Operator:=xlAnd, _
VisibleDropDown:=True
Else
MsgBox "Autofilter ist nicht aktiv"
End If
End Sub
Richtig ist, dass wenn man z.B. nach Nr. 115 filtert, auch nur die 115 angezeigt bekommt weil es keine 115/116 gibt.
FAST Richtig an Deinem Makro ist auch, dass wenn man in Spalte D nach 106 filtert, die mit der Endnummer 106 und 105/106 angezeigt bekommt.
Falsch ist, dass in diesem Fall noch die mit der Endnummer 105 angezeigt werden müssten (weil es eine 105/106 gibt).
Letzteres wird in dieser Combo-Box von Tino richtig gemacht:


Private Sub ComboBox1_Change()
Dim nZ1 As String, nZ2 As String
Dim MaxRow&
If Me.FilterMode Then Me.ShowAllData
If ComboBox1.ListIndex > 0 Then
Application.ScreenUpdating = False
nZ1 = Trim(ComboBox1)
nZ2 = IIf((nZ1 * 1) Mod 2 > 0, nZ1 + 1, nZ1 - 1)
nZ1 = Format(nZ1, "000")
nZ2 = Format(nZ2, "000")
Range("E4").FormulaR1C1 = "=OR((COUNTIF(RC4,""*" & nZ1 & "*"")>0),(COUNTIF(RC4,""*" & nZ2 &  _
"*"")>0))"
MaxRow = Cells(Rows.Count, 4).End(xlUp).Row
Range("D3:E" & MaxRow).AdvancedFilter xlFilterInPlace, Range("E3:E4")
Range("E4").Clear
Application.ScreenUpdating = True
End If
End Sub

In dieser Combo-Box ist aber der Fehler, dass wenn man nach 115 in Spalte D filtert trotzdem die mit der Nr 116 angezeigt bekommt, was aber nicht sein darf, weil es keine 115/116 gibt!!!
Ausführlicher ging es nicht zu erklären, es gehören eben die Nummern welche mit Schrägstrich sind zusammen.
Es wäre SUPER NETT wenn Du das Makro diesbezüglich noch korrigieren bzw. anpassen könntest!!!
Vielen Dank
Isolde
Anzeige
AW: Kleine Korrektur noch notwendig !!!
21.10.2010 08:00:15
fcs
Hallo Isolde,
die Umsetzung kann relativ kompliziert werden, insbesondere wenn man berücksichtigen muss, ob auch noch einer der anderen Filter in den Spalten B oder D gesetzt ist.
Gehen müßte es eigentlich, wenn man je nach Fall zusätzlich eine UND ist nicht gleich Bedingung einbaut.
Ich komme aber frühestens am Samstag dazu mich intensiv damit zu beschäfftigen.
Gruß
Franz
AW: Autofilter nach Zellselektion per Makro setzen
23.10.2010 02:28:12
fcs
Hallo Isolde,
ich in der hochgeladenen Datei sind Makros eingebaut. Eine Variante erfordert, dass in den Formeln für die Teil-Strings mit der Funktion GLÄTTEN zusätzlich die Leerzeichen am Anfang/Ende der Textteile entfernt werden.
Bei dieser Variate sind dann die im Code für den Autofilter zu ermittelnden Kriterien einfacher gestrickt.
Der einfache 10 Zeiler hat sich durch die Berücksichtigung der zusätzlichen Suchkriterien zu einer ausgewachsenen Prozedur entwckelt.
https://www.herber.de/bbs/user/72016.xls
Gruß
Franz
Anzeige
DANKE FRANZ!!
25.10.2010 15:16:21
Isolde
Danke Franz,
...du bist echt krass...das ist als Kompliment gemeint!!!
In meiner echten, also nicht Beispieltabelle, befinden sich diese Spalten mit den Teilenummern an anderer Position (also nicht in den Spalten A bis D).
Ich habe dafür nur die numerischen "Case-Bezüge" anpassen müssen und es funktioniert.
Außer die Case-Bezüge zu ändern, dürfte ja sonst keine weitere Anpassung nötig sein?
Danke nochmals,
Liebe Grüße,
Isolde

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige