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

Hilfe für den VBA Codeaufbau

Hilfe für den VBA Codeaufbau
14.10.2016 18:26:24
Chris
Hallo,
ich hoffe mir kann jemand helfen bei meinem kleinen "Problem".
also ich brauche hilfe bei der VBA-Codeschreibung
und zwar für folgendes:
in spalte A stehen 9750 Werte, gebrochene Zahlen.
jedoch brauche ich für die in VBA geschriebene Berechnung für Hysteresen ganze zahlen
wenn ich nun zahlen habe wie
0
56,7
-21,3
22,45
0
brauche ich diese so:
0
5670
-2130
2245
0
also um ein 100 faches vergrößert
jedoch ist die anzahl der dezimalstellen nicht "definiert" in den werten
es könnten zehntel, hundertstel, oder gar tausendstel sein
wüsste jemand ob und wie man sowas in vba bearbeiten kann
also im groben gesagt
nimm spalte a
untersuche spalte a
rechne so das nur ganze zahlen entstehen
speichere den faktor in einer anderen zelle
vielen dank schon mal

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe für den VBA Codeaufbau
14.10.2016 18:54:07
Daniel
Hi
das geht auch ohne Code:
die Formel in B1 berechnet die Anzahl der Nachkommastellen
die Formel in C1 rechnet dann die Zahl entsprechend um
A1: Zahl
B1: =WENNFEHLER(LÄNGE(A1)-FINDEN(",";A1);0)
C1: =A1*10^B1
für C1 gibt's auch folgende Alternative, die benötigt dann den Formelteil aus B1 nicht:
C1: =Wert(Wechseln(A1;",";""))
Gruß Daniel
AW: Hilfe für den VBA Codeaufbau
14.10.2016 19:15:18
Daniel
Sorry, du wolltest ja den Faktor haben, momentan gebe ich die 10-Potenz aus.
als Faktor:
A1: Zahl
B1: =10^WENNFEHLER(LÄNGE(A1)-FINDEN(",";A1);0)
C1: =A1*B1
eine Makrolösung gibt's natürlich auch, aber da finde ich die Formel eigentlich eleganter
Sub test()
Dim arr1, arr2
Dim rng1 As Range, rng2 As Range
Dim z As Long
Dim txt As String
Set rng1 = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Set rng2 = rng1.Offset(0, 1).Resize(, 2)
arr1 = rng1.Value
arr2 = rng2.Value
For z = 1 To UBound(arr1, 1)
If VarType(arr1(z, 1)) = vbDouble Then
txt = CStr(arr1(z, 1))
arr2(z, 1) = InStr(txt, ",")
If arr2(z, 1)  0 Then arr2(z, 1) = Len(txt) - arr2(z, 1)
arr2(z, 1) = 10 ^ arr2(z, 1)
arr2(z, 2) = arr1(z, 1) * arr2(z, 1)
End If
Next
rng2.Value = arr2
End Sub
Gruß Daniel
Anzeige
AW: Hilfe für den VBA Codeaufbau
15.10.2016 15:00:33
Chris
Hey
vielen Dank schon mal für den VBA Code
also er macht fast das was ich will
also ich brauche nicht für jeden wert den Faktor der berechnet wurde
sondern nur den Maximalwert
und alle werte sollen dann mit diesem maximalwert multipliziert werden
danke schon mal
leichte Änderung
15.10.2016 16:28:10
Michael
Hi,
ich habe Daniels Makro etwas geändert:
Sub testForum()
Dim arr1
Dim rng1 As Range
Dim z As Long
Dim txt As String
Dim St As Long, maxSt As Long ' ***
Set rng1 = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
arr1 = rng1.Value
For z = 1 To UBound(arr1, 1)
If VarType(arr1(z, 1)) = vbDouble Then
txt = CStr(arr1(z, 1))
St = InStr(txt, ",")
If St > 0 Then
St = Len(txt) - St
If St > maxSt Then maxSt = St
End If
End If
Next
If maxSt > 0 Then maxSt = 10 ^ maxSt
For z = 1 To UBound(arr1, 1)
arr1(z, 1) = arr1(z, 1) * maxSt
Next
rng1.Offset(, 1) = arr1
End Sub
Schöne Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige