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

VBA Makro Optimierung, langer Berechnungsprozess

VBA Makro Optimierung, langer Berechnungsprozess
27.03.2014 17:42:16
Alex
Guten Tag,
ich habe folgendes Problem:
Ich moechte mithilfe eines Makros die Distanz eines Punktes in einem 2-Dimensionalen Koordinatensystem mit 55000 anderen Punkten vergleichen, und denjenigen Punkt auswaehlen, der diesem am naechsten ist. Dies habe ich mit Schleifen geloest, da mir andere Loesung fuer dafuer unbekannt sind. Das Problem ist leider, dass die Berechnung aufgrund der grossen Menge an Werten mehrere Tage dauern wuerde.
Hier ist mein Code:
Sub PosComparison()
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim Remember As Long
Dim time1 As Double
Dim time2 As Double
Dim i As Long
Dim j As Long
time1 = Timer
For i = 1 To 109812
Remember = 1
For j = 1 To 55500
If ((Cells(i, 23).Value - Cells(j + 1, 3).Value) ^ 2) + ((Cells(i, 24).Value - Cells(j + _
1, 4).Value) ^ 2) 

Ich wuerde mich ueber jede Hilfe riesig freuen!
Viele Gruesse,
Alex

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Makro Optimierung, langer Berechnungsprozess
27.03.2014 19:32:31
ransi
Hallo Alex
ICh habe Schwierigkeiten anhand deines Codes die Berechnungsgrundlage zu erkennen.
Hast du ein kleine Beispieltabelle ?
Da sollte man erkennen wo die X-Werte und y-werte stehen.
ransi

AW: VBA Makro Optimierung, langer Berechnungsprozess
27.03.2014 21:37:55
Alex
Hallo ransi,
das tut mir leid. Wahrscheinlich habe ich mich mit meiner Problemstellung etwas zu kurz gefasst. Die zugehoerigen Werte habe ich nun etwas genauer erklaert s.u. Das Makro hat die Aufgabe die fuer die 114400 Punkte A den am naechsten liegenden Nachbarn der 55000 Punkte B zu finden und dann seine Eigenschaft zusammen mit der eigenen ID von A in die Zeilen 11 und 12 abzulegen. Ich hoffe das hilft ein wenig weiter. :)
Cells(i, 23).Value X-Werte der 114400 Punkte A
Cells(i, 24).Value Y-Werte der 114400 Punkte A
Cells(i, 14).Value Identifikationsnummer der einzelnen Punkte B
Cells(j + 1, 3).Value X-Werte der 55000 zu vergleichenden Punkte B
Cells(j + 1, 4).Value Y-Werte der 55000 zu vergleichenden Punkte B
Cells(Remember + 1, 5).Value Elementeigenschaft der zu vergleichenden Punkte
Cells(i + 1, 11).Value Ausgabeort der Punkt-ID
Cells(i + 1, 12).Value Ausgabeort der Elementeigenschaft
Viele Gruesse,
Alex

Anzeige
AW: VBA Makro Optimierung, langer Berechnungsprozess
28.03.2014 10:57:01
ransi
Hallo Alex
Ich habs immer noch nicht verstanden....
In Spalte W stehen x-werte
In Spalte X stehen y-Werte
je 114400 Stück
In spalte C stehen die anderen x-Werte
In spalte D die anderen y-Werte
In spalte E irgendwelche IDs zu den Wertepaaren in C:D zugehörig
je 55000 stück
Was soll jetzt wo ausgegeben werden ?
Lade doch mal biite eine kleine Beispieltabelle hoch.
ransi

AW: VBA Makro Optimierung, langer Berechnungsprozess
28.03.2014 12:26:02
Rudi
Hallo,
schieb alles in ein Array und rechne da.
i=1 to 1000 läuft ca 75 Sek.
Sub PosComparison()
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim Remember As Long
Dim time1 As Double
Dim time2 As Double
Dim i As Long
Dim j As Long
Dim arr
time1 = Timer
arr = Cells(1, 1).Resize(109812, 24)
For i = 1 To UBound(arr)
Remember = 1
For j = 1 To 55500
If _
((arr(i, 23) - arr(j + 1, 3)) ^ 2) _
+ ((arr(i, 24) - arr(j + 1, 4)) ^ 2) 

Gruß
Rudi

Anzeige
AW: VBA Makro Optimierung, langer Berechnungsprozess
28.03.2014 13:35:04
Alex
Wow, wenn das funktionieren wuerde, waere das super.
Ich habe das Makro eben laufen lassen, und bekam prompt einen 'Out of Range Fehler,
vermutlich fuer die Zeile:
Cells(1, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
Mit Arrays, muss ich zugeben, habe ich noch nicht so viel gearbeitet, aber ich denke das Programm scheitert da an der 2. Dimension von arr.
Habe ich da etwas falsch uebernommen, oder liegt der Fehler im Makro?
Gruss,
Alex

AW: VBA Makro Optimierung, langer Berechnungsprozess
28.03.2014 13:43:46
Rudi
Hallo,
vermutlich fuer die Zeile:
die Zeile ist korrekt.
Der Fehler muss woanders sein.
Lad doch mal eine gekürzte Mappe hoch.
Gruß
Rudi

Anzeige
AW: VBA Makro Optimierung, langer Berechnungsprozess
28.03.2014 14:16:50
Alex
Ich habe mich noch einmal dran gesetzt. Der Fehler lag bei mir. Fuer den Testlauf habe ich nicht i auf 1000 begrenzt, sondern j.
Dein Algorithmus laeuft super! Vielen Dank!
Gruss,
Alex

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige