online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Petra65 vom 01.06.2021, 09:23 Options

Lösung

per Makro Tabelle durchsuchen und Ergebnis ausgeben

Guten Morgen,

ich stehe mal wieder (dank Makro) total auf dem "Schlauch" - ich weiss genau was ich machen will, bekomme es aber einfach nicht hin.....

Mein Problem:
Ich habe eine Tabelle mit Kundendaten, in diese möchte ich nun eine Suchfunktion einbauen, die abfragt ob der Kunde bereits angelegt ist.

Die Tabelle enthält ab B9 die Nachnamen, ab C9 die Vornamen

Zum suchen möchte ich folgende Felder verwenden:
in C4 würde ich den Nachnamen eingeben,
in C5 den Vornamen

Bei Übereinstimmung könnte sich ja evtl. ein Fenster öffnen, und die zugehörige Kundennummer/n (ab A9) anzeigen ?? oder direkt in die ensprechende Zelle springen ?? Ich weiss nicht genau wie man es anstellen kann mit Mehrfach-Ergebnissen (es kann ja 10 Kunden mit dem Namen Birgit Meier geben)

Kann mir jemand bei der Lösung helfen ???

Gruss - Petra


Antwort schreiben

Antwort 1 von Saarbauer vom 01.06.2021, 12:20 Options

Hallo,

ich würde dir vorschlagen es mit Autofilter über alle Spalten zu versuchen, da kannst du über alle Kriterien filtern. Ist unter "Daten", "Filter""Autofilter" zu finden

Gruß

Helmut

Antwort 2 von Petra65 vom 01.06.2021, 13:35 Options

Hallo,

ja - habe ich auch schon dran gedacht.

Das Problem ist nur, dass diejenige, die mit der Tabelle arbeiten muss, 2 "linke Hände" hat, ich werde ihr wahrscheinlich 10 mal erklären müssen wie man den Filter wieder auf "alle anzeigen" umstellt ... (ist wirklich so) !!

Das bringt mich auf eine Idee: Kann man nicht den Befehl, der hinter dem Autofilter sitzt (bezogen auf Spalte B) per Makro einbauen?? Und über eine Schaltfläche wieder alle Daten anzeigen lassen?? Würde ja vollkommena usreichen.

Gruss - Petra

Antwort 3 von fedjo vom 01.06.2021, 14:17 OptionsLösung

Lösung
Hallo Petra,
Code in die Tabelle einfügen, wo gefiltert werden soll.
B4 =Nachname C4 = Vorname
Ist B4 leer wird der Filter zurückgesetzt.

Gruß
fedjo


Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Spalte As Range
Application.ScreenUpdating = False
Cells.Rows.EntireRow.Hidden = False
For Each Zelle In Range("B9:B" & Range("B65536").End(xlUp).Row)
If Zelle.Text <> Range("B4").Value Then
Zelle.Rows.EntireRow.Hidden = True
End If
Next
For Each Spalte In Range("C9:C" & Range("C65536").End(xlUp).Row)
If Spalte.Text <> Range("C4").Value Then
Spalte.Rows.EntireRow.Hidden = True
End If
Next
If Range("B4") = "" Then Cells.Rows.EntireRow.Hidden = False
End Sub

Antwort 4 von Petra65 vom 01.06.2021, 14:36 Options

Hallo Fedjo,

is ja genial ..... damit kommt auch meine Kollegin klar ;-)))

Super toll - vielen Dank!!


@Helmut: auch Dir Danke für die Anregung - hat mir mal wieder gezeigt wie kompliziert man denken kann, und dass es auch viel einfacher geht.


Viele Grüße - Petra

Antwort 5 von Petra65 vom 02.06.2021, 21:08 Options

Hallo,

noch eine Frage zu obrigem Makro:

ist es aufwendig das so zu gestalten, dass die Abfrage auch greift wenn z.B. nach Kleinbuchstaben gesucht wird (also meier statt Meier) oder auch bei Tippfehlern (Boeddeker statt Böddeker)??

LG
Petra

Antwort 6 von Dummy0815 vom 03.06.2021, 10:21 Options

Hallo

Zu 1
nutze Ucase()

Zu 2 einige Tips
Daten in ein Array
Vergleich,Umlaute und dessen Platzhalter ersetzen ,erneuter Vergleich

Antwort 7 von fedjo vom 04.06.2021, 18:18 Options

Hallo Petra,
Code in die Tabelle einfügen.
B4 = Nachname
Groß oder Kleinschreibung spielt keine Rolle.

Gruß
fedjo


Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c, firstAddress
Dim strSuch As String, rngBer As Range
Set rngBer = Range("B9:B" & Range("B65536").End(xlUp).Row)
With rngBer
strSuch = Range("B4").Value
If strSuch = "" Then
Cells.Rows.EntireRow.Hidden = False
Exit Sub
End If
Set c = .Find(strSuch, LookIn:=xlValues)
If c Is Nothing Then
MsgBox "Name nicht vorhanden"
Else
firstAddress = c.Address
Do
c.Activate
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Dim zelle As Range
Dim Spalte As Range
Application.ScreenUpdating = False
Cells.Rows.EntireRow.Hidden = False
For Each zelle In Range("B9:B" & Range("B65536").End(xlUp).Row - 1)
If zelle.Text <> ActiveCell Then
zelle.Rows.EntireRow.Hidden = True
End If
Next
End Sub

Antwort 8 von Petra65 vom 04.06.2021, 22:16 Options

Hallo Fedjo,

funktionier super gut ... ;-)

Was mich allerdings irritiet ist, dass bei jeder Suche der letzte
Datensatz mit angezeigt wird.

Stört nicht weiter - wundert mich nur... oder liegt es daran, dass sich (durch Umstrukturierung) einige Felder geändert haben??
In C5 = Nachnahme
ab B10 muss gesucht werden


Hab ich da evtl. was übersehen ???


Der Code sieht geändert so aus:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c, firstAddress
Dim strSuch As String, rngBer As Range

Set rngBer = Range("B10:B" & Range("B65536").End(xlUp).Row)

With rngBer
strSuch = Range("C5").Value

If strSuch = "" Then
Cells.Rows.EntireRow.Hidden = False
Exit Sub
End If

Set c = .Find(strSuch, LookIn:=xlValues)
If c Is Nothing Then
MsgBox "Name nicht vorhanden"
Else
firstAddress = c.Address
Do
c.Activate
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With

Dim zelle As Range
Dim Spalte As Range

Application.ScreenUpdating = False
Cells.Rows.EntireRow.Hidden = False
For Each zelle In Range("B10:B" & Range("B65536").End(xlUp).Row - 1)

If zelle.Text <> ActiveCell Then
zelle.Rows.EntireRow.Hidden = True
End If
Next
End Sub


Gruss - Petra

Antwort 9 von fedjo vom 05.06.2021, 11:04 Options

Hallo Petra,
dann vielleicht so:

For Each zelle In Range("B10:B" & Range("B65536").End(xlUp).Row )

Gruß
fedjo

Antwort 10 von Petra65 vom 05.06.2021, 19:53 Options

Hallo Fedjo,

jep ;-)))) ..... genau das wars ......

vielen, vielen Dank ......

(ich wüsste gar nicht mehr was ich ohne dieses tolle Forum machen sollte )


Viele Grüße - Petra

Ähnliche Themen

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026