Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Auswertung von zigtausend Daten über Array
#11
Hallo snb

habe ich gerade aktiviert, war nicht gesetzt. Der Code laeuft trotzdem nicht. Können da noch Referencen fehlen??
Wie kann ich die komplett auflisten, damit du sehen kannst was bei mir vielleicht nicht aktiviert ist??
Ich habe es mit zwei Codes aus dem Internet versucht,aber  beide bleiben in der For Zeile haengen''

mfg  Gast 123

Code:
Sub Test1()
Dim ref, z As Long: z = 2
For Each ref In Application.References
  Cells(z, 2) = ref.fullpath
  z = z + 1
Next
End Sub

Sub Test2()
   Dim z As Long: z = 2
   Dim objReference As Object
   For Each objReference In ThisWorkbook.VBProject.References
       Cells(z, 2) = objReference.fullpath
       z = z + 1
   Next
End Sub
Antworten Top
#12
Was passiert mit diesem Code in M_snb ?


Angehängte Dateien
.xlsb   __Ziel Tabellen vergleichen.xlsb (Größe: 21,86 KB / Downloads: 1)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#13
Hallo snb

ich habe bei meinem PC immer wieder das Problem das er siich an Codeteilen aufhaengt die er nicht verdauen kann.

Dafür ist es mir gelungen durch umstricken einen lauffaehigen Code zu basteln der bei 1000 Daten bei 33 Sekunden liegt.  Ich habe noch eine Match Prüfung einbauen müssen, weil mir einfiel das laut Frager die Datensaetze nicht immer übereinstimmen. Das in der Quelle neue Daten sein können, die ich unten anhaengen sollte. Diese zusaetzliche Prüfung ist also notwendig, braucht aber wieder mehr Zeit als ein direkter 1.1. Array Vergleich.

Beim Array laden bin ich mir im Augenblick auch unsicher ob in deinem Code berücksichtigt wurde das die Quelldatei 52 Spalten hat, bis AZ, die Zieldatei aber nur 14, wovon 12 verglichen werden müssen. Eine Variante von mir war das Array mit Chosse für die genaue Spaltenauswahl zu verknüpfen, dauerte aber über 1 Minute. Mein Versuchb das Array über Union(Range) zu laden schlug fehl. Da wurden nur die ersten fünf  zusammenhaengenden Spalten geladen.  

Meine letzte und bis jetzt schnellste Idee war das Quellblatt in die Zieldatei kopieren, allie überflüssigen Spalten löschen, und dann den Array Bereich zu laden. Dann stimmen Quelle- und Zielspalten im Array 1:1 überein. Das ist bisher meine schnellste Lösung.

Was ich bei deinem ersten Code noch niicht verstanden habe ist die erste For Next Schleife nach der With Klammer, was die genau macht?? Und was der Befehl "scripting dicitionary" mit .Item und Appl.ication.Index genaue bewirkt?? Unklar sind mir auch in der zweiten For Next Schleife die Befehle "exists" und "item"?? Weil ich unter sq=.Item  sp als ganzes Array verstehe, aber es sich dahinter bei sp(j, 1) nur um eine Zelle handeln kann. Die gesamte Array Materie ist mir noch ein grosses Raetsel. 

Ich bedanke mich aber auf jeden Fall das ich durch deine Hilfe die Laufzeit des ersten Makros von über 2 Minuten auf 33 sek. reduzieren konnte. Da die Prüfung sehr aufwendig bleibt, nicht 1.1. möglich ist, wird es m.E. immer lange Laufzeiten geben. Die lassen sich irgendwo nicht mehr verringern.    

mfg Gast 123

Code:
     With CreateObject("scripting.dictionary")
        For j = 2 To UBound(sn)
            .Item(Format(sn(j, 1))) = Application.Index(sn, j)
        Next
   
        For j = 2 To UBound(sp)
            If .exists(Format(sp(j, 1))) Then
               sq = .Item(Format(sp(j, 1)))
               For jj = 3 To UBound(sp, 2)


Angehängte Dateien
.xlsm   Ziel Tabellen vergleichen.xlsm (Größe: 415,99 KB / Downloads: 2)
Antworten Top
#14
Für Dictionaries, schau mal: https://www.snb-vba.eu/VBA_Dictionary.html


Angehängte Dateien
.xlsm   0_Tabellen vergleichen.xlsm (Größe: 405,35 KB / Downloads: 2)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#15
Hallo snv

Sorry das ich mich bisher rnicht gemeldet habe, hatten heute den ganzen Tag kein Internet.

Bei dem letzten Beispiel laeuft der Code in Sheet2 sehr schnell, der in Sheet1 ist dagegen langsam. Bei nur 30 Daten in Quelle waren beide sofort fertig. Als ich Quelle und Ziel 1:1 mit 1000 Daten gleichsetzte brauchte das eine Makro über 2 Minuten, das andere kam auf 43 Sekunden. (Time in Zellen notiert)

Was bei beiden nicht funktioniert ist die farbliche Markierung bei Differenzen! Liegt das an meinem PC???  Obwohl in der Zelle Werte mit "2001_" Zeichen stehen!  Dazu kam mir noch eine Idee, die ich aber nicht umsetzen konnte.  Wenn du in Zellen das "_" Zeichen anhaengst, könnte man dann den Zellwert nicht gegen den Wert der Quelle Tabelle austauschen.  Das habe ich leider nicht hinbekommen, verstehe noch zu wenig von deiner Technik mit ".Items". Dann könnte man nach dem farblichen markieren mit Replace alle "_" Zeichen löschen! 

Vielen Dank für deine Hilfe.

mfg Gast 123
Antworten Top
#16
Das farblich markieren gescheht mirt conditional formatting (bedingte formatierung).
Du kannst im neu erstelltes Arbeitsblatt kontrolieren welche CF es gibt.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#17

Hallo snb

Danke  und Ende in diesem Thread.

mfg Gast 123
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste