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

Bestimmte Zellinhalte finden in Monstertabelle

Bestimmte Zellinhalte finden in Monstertabelle
Holger
Hallo,
ich habe ein Makro, welches sehr lange läuft (teilweise über 1h).
Nun möchte ich dieses Makro optimieren und habe eine gute Idee, nur komme
ich mit der Umsetzung nicht weiter. Also ich habe eine Tabelle mit 20.000 Datensätzen.
Nun suche ich in der Spalte A nach dem Cell.Value = Holger.
Nur wenn das erfüllt ist, folgen weitere Aktionen.
Das Problem hierbei: Es können mehrere Zellen mit Cell.Value = Holger geben
und nur nach einer weiteren Prüfung soll eine Aktion erfolgen.
Erst dache ich, ich könnte Holger mit Cells.Find finden, aber dann würde er nur die erste finden.
Wie kann ich also in dieser Monstertabelle schnell alle Zellen mit Holger finden?
Immoment schleife ich durch alle 20.000 Datensätze und überprüfe ob Cell.Value = Holger ist.
Das dauert natürlich ewig.
So sieht es immoment aus:
Sub Dauertlange
Do While InstoreWS.Cells(intZ, 1).Value  ""
strITEMID = InstoreWS.Cells(lngRow, 1).Value
strCountry = InstoreWS.Cells(lngRow, 5).Value
FindITEMID strITEMID, strCountry, rngInStoreBereich
InstoreWS.Activate
lngRow = lngRow + 1
intZ = intZ + 1
Loop

Sub FindITEMID(ITEMID As String, ctry As String, rngBereich As Range) ' ITEMID = Holger
Dim rngmyCell As Range
cpwInstoreWS.Activate
For Each rngmyCell In rngBereich
If rngmyCell.Offset(0, 4).Value  "" Then
If rngmyCell.Offset(0, 4).Value  "OK" Then
If rngmyCell.Value = ctry Then
If rngmyCell.Offset(0, 1).Value = ITEMID Then ' Wenn = Holger dann
rngmyCell.Offset(0, 5).Value = InstoreWS.Cells(lngRow, 2).Value
rngmyCell.Offset(0, 4).Value = "OK"
Exit Sub
End If
End If
End If
End If
Next rngmyCell
End Sub

End Sub

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

Betreff
Benutzer
Anzeige
AW: Bestimmte Zellinhalte finden in Monstertabelle
05.08.2010 16:35:13
Peter
Hallo Holger,
das könnte z. B. so funktionieren:
Public Sub Find_Methode()
Dim rZelle        As Range
Dim sFundst       As String
Dim sSuchbegriff  As String
Dim lZeile        As Long
   sSuchbegriff = "Holger"
   With ThisWorkbook.Worksheets("Tabelle1").Columns(1)
      Set rZelle = .Find(What:=sSuchbegriff, LookAt:=xlPart, LookIn:=xlValues)
      If Not rZelle Is Nothing Then
         sFundst = rZelle.Address
         Do
            lZeile = lZeile + 1
            ThisWorkbook.Worksheets("Tabelle2").Range("A" & lZeile).Value = _
               rZelle.Address(0, 0)
            Set rZelle = .FindNext(rZelle)
         Loop While Not rZelle Is Nothing And rZelle.Address <> sFundst
       Else
         MsgBox "Der Begriff  """ & sSuchbegriff & """  wurde nicht gefunden.", _
            48, "   Hinweis für " & Application.UserName
      End If
   End With
   
End Sub
Gruß Peter
Anzeige
AW: Bestimmte Zellinhalte finden in Monstertabelle
05.08.2010 16:35:14
Rudi
Hallo,
mit Cells.Find finden, aber dann würde er nur die erste finden.

Es gibt auch noch FindNext.
Außerdem solltest du für die Prüfung eine andere Reihenfolge wählen, da du ja primär nach Holger suchst.
Also erst
If rngmyCell.Offset(0, 1).Value = ITEMID Then
dann
If rngmyCell.Value = ctry Then
und dann den Rest. Dadurch entfallen einige Prüfungen.
Was ist rngBereich? Nur die Spalte A?
Gruß
Rudi
AW: Bestimmte Zellinhalte finden in Monstertabelle
05.08.2010 19:27:52
Holger
Hi Rudi,
der Range ist aufgebaut von Zelle A10 bis ALastRow.
Alles andere mache ich mit OffSet.
Die Reihenfolge habe ich beim Tippen vertauscht.
FindNext? Wie geht das? Denn es kann Holger nfach vorkommen
und es soll ja auch schneller gehen.
Anzeige
AW: Bestimmte Zellinhalte finden in Monstertabelle
05.08.2010 17:24:39
mpb
Hallo Holger,
ohne Deinen Code näher analysiert zu haben und nur als Anregung:
Ich gehe davon aus, dass es (sinngemäß) ausreicht, nur die Zellen in einer Schleife zu durchlaufen, in denen in Spalte A "Holger" steht. Hierzu würde ich zunächst eine Hilfsspalte B einfügen (oder irgendeine leere Spalte in der Tabelle ausnutzen) und in B1 die Formel
=WENN(A1="Holger";ZEILE();"")
eingeben und dann bis B20000 kopieren (ggf. in das folgende Makro integrieren).
Ziel ist es, dass in Spalte B in den "Holgerzellen" eine Zahl und ansonsten keine Zahl steht. Dann zur Demonstration folgendes Makro, das in die Holgerzellen der Spalte C die Zeilennummer schreibt:
Sub Nur_Treffer()
Application.ScreenUpdating = False
For Each cell In Columns("B:B").SpecialCells(xlCellTypeFormulas, 1)
cell.Offset(0, 1) = cell.Row
Next
Application.ScreenUpdating = True
End Sub
Wichtig ist der fett gesetzte Ausdruck. Er sorgt dafür, dass in der Schleife nur die Holgerzellen durchlaufen werden und das sollten ja viel weniger als 20000 sein. Das Makro läuft bei mir ein paar Sekunden.
Gruß
Martin
Anzeige
AW: Bestimmte Zellinhalte finden in Monstertabelle
05.08.2010 19:40:43
Cathy
Hallo Holger,
auch ich habe eine Monstertabelle mit ca 45.000 Datensätzen und etwa 230-240 Spalten zu bearbeiten bzw. nach mehreren Kriterien aufzubereiten. Dabei habe ich mir mit dem Spezialfilter (Liste an andere Stelle kopieren) geholfen. Diese gefilterte Liste beinhaltete damit nur noch etwa 500-1.000 Datensätze, die ich dann per (temporären) Formeln auslesen konnte.
Vielleicht hilft dir dieser Gedankengang ja weiter.
Mit freundlichen Grüßen
Cathy

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige