ich habe ein Makro erstellt das aufgrund der stetig anwachsenden Datenmenge nun mehrere Stunden läuft. Mir ist schon klar, dass es bei einer großen Datenmenge auch eine gewisse Zeit braucht die Berechnungen durchzuführen, aber vielleicht kommen eure kreativen Köpfe auf eine Optimierung des Codes an die ich noch nicht gedacht habe oder die ich nicht kenne.
Hier die Randbedingungen:
Die Exceldatei hat ca. 60.000 Zeilen. In jeder Zeile gibt es einen 160-stelligen String. Es werden immer 4 Stellen des Strings ausgelesen, dann getrennt in die ersten 2 Stellen und die letzten 2 Stellen, welche dann umgerechnet werden.
Also, aus einem 160-stelligen String werden 40 Einzelstrings die dann berechnet werden. Das ganze multipliziert mit der Zeilenanzahl und man hat dann mal locker 2,4 Mio. Berechnungen. Wie gesagt, dass das ganze eine gewisse Zeit benötigt ist mir schon klar, aber vielleicht gibt es ja noch Optimierungsvorschläge.
Hier nun der Code:
Sub Widerstand_ermitteln()
Zieldatei = "Ergebnisse_Auswertung_leer.xls"
Verbaut = False
For i = 2 To ActiveSheet.Range("a65536").End(xlUp).Row
For j = 0 To 39
Suchstring = Mid(Cells(i, 5), j * 4 + 1, 4)
HiByte = Val("&H" & Left$(Suchstring, 2))
LowByte = Val("&H" & Right$(Suchstring, 2))
If HiByte 255 And LowByte 255 Then
Widerstand = Widerstandsberechnung(HiByte, LowByte)
Verbaut = True
End If
If Verbaut = True Then
With Cells(i, 8 + j)
.NumberFormat = "0.00"
If Widerstand
Function Widerstandsberechnung(HiB As Byte, LowB As Byte) As Double
Widerstand = (((HiB * 256 + LowB) * 6.875) / 700) - 0.15
Widerstandsberechnung = Widerstand
End Function
So, nun könnt ihr mal eure Köpfe rauchen lassen. Ich bin mal gespannt was ihr für Vorschläge habt.
Gruß
Jürgen