Microsoft Excel

Herbers Excel/VBA-Archiv

Daten Filtern

Betrifft: Daten Filtern von: Jotka
Geschrieben am: 30.07.2008 16:46:26

Hallo,
ich habe folgendes Problem:

Ich habe eine Mappe mit zwei Tabellenblätern. Das eine Tabellenblatt soll eine Such- und Ergebnismaske sein, das zweite Tabellenblatt enthält die Daten (Postleitzahlenliste).

Ich möchte jetzt auf dem ersten Blatt eine Postleitzahl und/oder einen Ort eingeben. Dann soll Excel die Daten auf dem zweiten Blatt durchsuchen und das Ergebnis auf dem ersten Blatt wiedergeben. Dadurch, dass viele Orte mehrere Postleitzahlen haben oder Orte mit gleichem Namen unterschiedlich Plz haben, kann es bei der Suche nur mit Ortsnamen natürlich mehrere Ergebnisse geben, die auch als Ergebnis angezeigt werden sollen.

Das Problem lässt sich im Prinzip per Spezialfilter ganz gut lösen, allerdings bekomme ich immer Probleme sobald ich mit zwei Tabellenblättern arbeite. Ausserdem hätte ich das ganze gerne per Knopfdruck auf der Suchseite. Allerdings habe ich von Makros etc. mal gar keinen Plan.

Das ganze sieht wie folgt aus:

Tabelle "Suche" B5 (Plz)
Tabelle "Suche" C5 (Ort)

Ausgabe Suchergebniss ab Tabelle "Suche" A10

Datenliste in Tabelle "Berechnung" A2:I3555

Ich hoffe mit dieser Beschreibung kann irgendwer etwas anfangen. Leider kann ich die Arbeitsmappe nicht hochladen, da der File zu groß ist. Hoffe trotzdem das mir hier jemand helfen kann.

Danke im Voraus.

  

Betrifft: AW: Daten Filtern von: Rudi Maintaire
Geschrieben am: 30.07.2008 17:13:03

Hallo,
teste mal:

Sub PLZundOrtFiltern()
  Dim i As Long, j As Long, k As Long
  Dim arrQuelle, arrZiel()
  Dim strPLZ As String, strOrt As String
  
  Const iPLZ As Integer = 1 'Spalte PLZ
  Const iOrt As Integer = 2 'Spalte Ort
  
  strPLZ = Sheets("Suche").Range("B5")
  strOrt = Sheets("Suche").Range("C5")
  
  arrQuelle = Sheets("Berechnungen").Range("A1").CurrentRegion
  ReDim arrZiel(1 To UBound(arrQuelle), 1 To 9)
  
  k = 1
  i = 1
  'Überschriften in Array schreiben
  For j = 1 To 9
    arrZiel(k, j) = arrQuelle(i, j)
  Next
  
  'Daten suchen und in Array schreiben
  For i = 2 To UBound(arrQuelle)
    If arrQuelle(i, iPLZ) & "*" Like strPLZ And arrQuelle(i, iOrt) Like strOrt & "*" Then
      k = k + 1
      For j = 1 To 9
        arrZiel(k, j) = arrQuelle(i, j)
      Next
    End If
  Next i
  
  'Daten in Suche schreiben
  arrZiel = WorksheetFunction.Transpose(arrZiel)
  ReDim Preserve arrZiel(1 To 9, 1 To k)
  Sheets("suche").Range("A10").Resize(k, 9) = WorksheetFunction.Transpose(arrZiel)
End Sub


Gruß
Rudi


  

Betrifft: AW: Daten Filtern von: Jotka
Geschrieben am: 30.07.2008 17:42:48

Hallo Rudi,
danke für die schnelle Info, aber was mache ich damit ???

Ich kenne mich zwar mit Excel ganz gut aus, habe aber von Makros und dem Kram keinen Plan.

Kopiere ich das alles in ein neues Makro und ordne das z.B. einer Schaltfläche zu, oder was ??

Gruss
Jotka


  

Betrifft: AW: Daten Filtern von: Jotka
Geschrieben am: 30.07.2008 17:49:51

Hallo Rudi,
hab das einfach mal probiert und bekomme folgenden Fehler:

Laufzeitfehler '9' Index außerhalb des gültigen Bereichs

Wenn ich auf "debuggen" klicke, wird die mittlere Zeile gelb unterlegt:

strOrt = Sheets("Suche").Range("C5")

arrQuelle = Sheets("Berechnungen").Range("A1").CurrentRegion
ReDim arrZiel(1 To UBound(arrQuelle), 1 To 9)

Gruss
Jotka


  

Betrifft: AW: Daten Filtern von: Jotka
Geschrieben am: 30.07.2008 17:55:51

... und nochmal ich ....

der Fehler liegt anscheinend beim Tabellennamen, der ist nämlich Berechnung und nicht Berechnungen. Ich habe das mal korrigiert, aber dann passiert gar nichts mehr. Kein Fehler, aber auch kein filtern.


  

Betrifft: AW: Daten Filtern von: Rudi Maintaire
Geschrieben am: 31.07.2008 09:31:07

Hallo,
lade mal eine Beispielmappe hoch.

Gruß
Rudi


 

Beiträge aus den Excel-Beispielen zum Thema "Daten Filtern"