Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
440to444
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
440to444
440to444
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Suchen in variablen Spalten
19.06.2004 20:42:51
Kathrin
Hallo zusammen,
ich hoffe ihr könnt´ mir helfen.
Ich habe mir ein Makro "gebastelt", mit kräftiger Unterstützung von Beispielen aus diesem Forum, mit dem ich aus einer Tabelle jede Zeile in der der Suchbegriff vorhanden ist, der in eine Inputbox eingeben wird, in ein anderes Tabellenblatt kopieren.
Meine Kunden-Tabelle in der ich suchen lassen will, ist 55000 Zeilen und 20 Spalten groß. Die Suche dauert viel zu lange, da in allen Zellen gesucht wird.
Hier meine Frage: Wie kann ich über eine Inputbox die Suche auf eine variable Spalte einschränken? Also suche den Begriff "soundso" nur in der Spalte "XY" und kopiere bei Übereinstimmung die Zeile.
Diese Einschränkung ist wichtig, da ich die Kundentabelle nach verschiedenen Kriterien auswerten will.
Habe rumprobiert, bin aber zu keinem Ergebnis gekommen.
Ich hoffe, ich habe mich verständlich ausgedrückt;-)

Sub ListeGefundenerZellentest()
Dim A As Long
Dim R As Long
Dim S As String
Dim Y As String
Dim Z As Range
Dim WS As Worksheet
Dim Liste As Worksheet
Set Liste = ActiveSheet
S = InputBox("Bitte Suchbegriff eingeben:")
If S = "" Then Exit Sub
Y = InputBox("Bitte Spalte eingeben:")
If Y = "" Then Exit Sub
'S = "*" & S & "*"  'es werden auch Zellen angezeigt, die noch mehr als den Suchstring enthalten
With Liste
.Rows("6:" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Clear
.Cells(6, 1) = "Suchbegriff: """ & S & """"
End With
A = 9
For Each WS In ThisWorkbook.Worksheets
R = 0
For Each Z In Range("s:s")
If Z.Text Like S And WS.Name <> Liste.Name Then
If R < Z.Row Then
A = A + 1
Z.EntireRow.Copy
Liste.Rows(A).PasteSpecial Paste:=xlValues
End If
Liste.Rows(A).Borders(xlEdgeBottom).Weight = xlThin
Liste.Cells(A, Z.Column).Interior.ColorIndex = 6
If R < Z.Row Then R = Z.Row
End If
Next Z
Next WS
Liste.Columns.AutoFit
Liste.Cells(A + 1, 1).Select
Sheets("Tabelle2").Select
Range("A1:GC1").Select
Selection.Copy
Sheets("Tabelle1").Select
Range("A8").Select
ActiveSheet.Paste
Range("D9").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[65527]C)"
Range("D10").Select
ActiveWindow.SmallScroll Down:=-77
Range("D9").Select
Selection.AutoFill Destination:=Range("D9:F9"), Type:=xlFillDefault
Range("D9:F9").Select
Range("E6").Select
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").EntireColumn.AutoFit
Columns("F:F").EntireColumn.AutoFit
Range("D9:F9").Select
Selection.NumberFormat = "#,##0"
Range("D9:F9").Select
Selection.Font.Bold = True
End Sub

Gruß
Kathrin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen in variablen Spalten
Gerd
Verwende die Find- Methode, dann geht die Suche 10000 mal schneller.
Gerd
AW: Suchen in variablen Spalten
19.06.2004 21:25:43
Nepumuk
Hallo Gerd,
das wage ich zu bezweifeln. In dieser Mappe:
https://www.herber.de/bbs/user/7532.xls
sind in drei Zeilen ein "x". Schreib mal mit der Find - Methode eine Routine, die schneller ist wie meine. Die benötigte Zeit ist in der Caption der MsgBox.
Gruß
Nepumuk
AW: Suchen in variablen Spalten
Gerd
Alles in ein Datenfeld und dann noch in einer Spalte, das ist keine Kunst.
Gerd
AW: Suchen in variablen Spalten
19.06.2004 21:44:42
Nepumuk
Hallo Gerd,
90% aller Suchprogramme die hier nachgefragt wurden, suchten in einer Spalte. Siehe Anfrage von Kathrin.
Gruß
Nepumuk
Anzeige
AW: Suchen in variablen Spalten
19.06.2004 21:07:46
Nepumuk
Hallo Kathrin,
ich wollte nicht alles umbauen, aber so sollte es schon schneller laufen:


Sub ListeGefundenerZellentest()
    Dim intSpalte As Integer
    Dim As Long
    Dim As Long
    Dim As String
    Dim As String
    Dim As Range
    Dim WS As Worksheet
    Dim Liste As Worksheet
    Set Liste = ActiveSheet
    S = InputBox("Bitte Suchbegriff eingeben:")
    If S = "" Then Exit Sub
    Y = InputBox("Bitte Spalte eingeben:")
    If Y = "" Then Exit Sub
    Y = Trim$(UCase$(Y))
    If Len(Y) = 1 Then
        intSpalte = Asc(Y) - 64
    Else
        intSpalte = (Asc(Left(Y, 1)) - 64) * 26
        intSpalte = intSpalte + Asc(Right(Y, 1)) - 64
    End If
    'S = "*" & S & "*"  'es werden auch Zellen angezeigt, die noch mehr als den Suchstring enthalten
    With Liste
        .Rows("6:" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Clear
        .Cells(6, 1) = "Suchbegriff: """ & S & """"
    End With
    A = 9
    Application.ScreenUpdating = False
    For Each WS In ThisWorkbook.Worksheets
        If WS.Name <> Liste.Name Then
            With WS
                R = 0
                For Each In .Range(.Cells(1, intSpalte), .Cells(.Cells(Rows.Count, intSpalte).End(xlUp).Row, intSpalte))
                    If Z.Text Like Then
                        If R < Z.Row Then
                            A = A + 1
                            Z.EntireRow.Copy
                            Liste.Rows(A).PasteSpecial Paste:=xlValues
                        End If
                        Liste.Rows(A).Borders(xlEdgeBottom).Weight = xlThin
                        Liste.Cells(A, Z.Column).Interior.ColorIndex = 6
                        If R < Z.Row Then R = Z.Row
                    End If
                Next Z
            End With
        End If
    Next WS
    Liste.Columns.AutoFit
    Liste.Cells(A + 1, 1).Select
    Sheets("Tabelle2").Select
    Range("A1:GC1").Select
    Selection.Copy
    Sheets("Tabelle1").Select
    Range("A8").Select
    ActiveSheet.Paste
    Range("D9").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[65527]C)"
    Range("D10").Select
    Range("D9").Select
    Selection.AutoFill Destination:=Range("D9:F9"), Type:=xlFillDefault
    Range("D9:F9").Select
    Range("E6").Select
    Columns("D:D").EntireColumn.AutoFit
    Columns("E:E").EntireColumn.AutoFit
    Columns("F:F").EntireColumn.AutoFit
    Range("D9:F9").Select
    Selection.NumberFormat = "#,##0"
    Range("D9:F9").Select
    Selection.Font.Bold = True
    Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk
Anzeige
AW: Suchen in variablen Spalten
Kathrin
Hallo Nepumuk,
vielen Dank, danach habe ich gesucht.
Du hast mir sehr geholfen.
Noch einen schönen Sonntag.
Gruß
Kathrin

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige