Excel 2013 makro, um nur bestimmte Zeilen basiert auf eine Zelle-Wert
ich bin neu in excel-Makros und vba.
Ich habe eine excel-Datei mit über 300000 Zeilen im ersten Blatt, wo es Element-IDS in der ersten Spalte(Sie können auch mehrere sein, die hat den gleichen Wert), und etwa 1000 Zeilen in zweite Blatt(erste Spalte enthält auch die Element-IDS, aber Sie sind einzigartig hier). ich muss ein makro schreiben, das blendet Zeilen, die in der ersten Platte auf der zweiten Platte. ich meine, ich brauche, um eine Schleife zu werfen, werden alle Zeilen im ersten Blatt und wenn die erste Zelle mit dem Wert nicht übereinstimmt, jede Zelle der ersten Spalte des zweiten Blattes auf, dann verstecken Sie diese Zeile.
ich weiß, dass es sehr langsam wie ich immer vergleichen müssen cellvalue mit weiteren 1000 Zellen-Werte, und ich habe 300 000 Zeilen. Wie kann ich es tun? könnten Sie bitte vorschlagen, der Schnellste Weg? jede Hilfe würde geschätzt, danke im Voraus.
BEARBEITEN
nach der Suche eine Menge, die ich aus meinem eigenen makro
Sub hide()
Dim MyCell, Rng As Range, Rn2 As Range
Dim MyCell2
Dim id(1 To 1392) As String
Set Rng = Sheets("Sheet0").Range("C162403:C339579")
Set Rng2 = Sheets("IT stuff").Range("A1:A22031")
i = 1
For Each MyCell2 In Rng2
If Not MyCell2.EntireRow.Hidden Then
id(i) = MyCell2.Value
i = i + 1
End If
Next MyCell2
j = 0
For Each MyCell In Rng
For A = 1 To 1392
If MyCell = id(A) Then
j = 1
End If
Next A
If j = 0 Then
MyCell.EntireRow.Hidden = True
ElseIf j = 1 Then
j = 0
End If
Next MyCell
End Sub
ist die Verarbeitung nun meine excel-Datei, jedoch ist es sehr langsam... wie kann ich es verbessern??
vba hide columns
... finden Sie unter : SO Sucheich habe gesehen, dass viele von Ihnen auf so, aber mein problem ist, dass meine excel-Datei ist sehr groß und ich wollte wissen, Schnellste Weg. Da weiß ich geschrieben habe ein makro, und es läuft für mehr als 30 Minuten...willst du etwa wissen, wie viel Zeit wird es dauern, für ein makro zu tun, was ich will? ich denke, vielleicht habe ich einen Fehler gemacht und, dass es laufen wird, Endlosschleife...
InformationsquelleAutor Asiat | 2013-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufrufe für die Excel-Objekt-Modell verlangsamt die Dinge wesentlich, so ist es wahrscheinlich am besten, zu laden, die Werte, die Sie überprüfen möchten in ein dictionary oder array, und verweisen, statt. Sie könnten auch laden Sie die Nummer der Zeile und den Wert der Zeilen, die Sie prüfen, in einem anderen Wörterbuch und cross-Referenz-die zwei Daten-Strukturen während der Herstellung beachten der Zeilen, die Sie brauchen, um sich zu verstecken. Auf diese Weise arbeiten nehmen einiges an Speicher, aber wird auf jeden Fall schneller als die cross-Referenzierung Blätter direkt...
hth
InformationsquelleAutor Pat Mustard
Warum VBA? Und nicht
Excel Formula(Vlookup)
+Autofilter
Lassen Sie uns sagen, Ihr Blatt 1 sieht wie folgt aus
Und Blatt 2 sieht aus wie diese
Einfach eine Spalte Hinzufügen, wie unten gezeigt und setzen Sie die Formel und dann mit Autofilter Ausblenden der entsprechenden Zeilen.
Formel in
I2
istInformationsquelleAutor Siddharth Rout
Der folgende code nimmt einen etwas anderen Ansatz zu deinem problem. Bitte beachten Sie, daß es wird davon ausgegangen, dass Tabelle1 Werte in Spalte A plus eine unbestimmte Anzahl von Datenspalten und, Tabelle2 ist nur ein Satz von Werten in Spalte A, gegen die der Tabelle1 in Spalte A Werte sind aufeinander abgestimmt.
Der code macht Folgendes:
Getestet habe ich die Prozedur mit einem Tabelle1 Datenbestand von 300.000 Zeilen code die Werte in Spalte A und zufälligen numerischen Daten in den Spalten B und C, mit knapp über 1.000 match-Werte in Tabelle2. Die zufällig generierten 10-stelligen code und die match-Werte wurden so konstruiert, dass 20 Prozent der Tabelle1 in Spalte A Werte wurden nicht-übereinstimmungen.
Laufzeiten gegen diese Daten gemittelt unter zwei Minuten.
InformationsquelleAutor chuff