2 hoch irgendwas - per Formel oder VBA
03.08.2013 12:47:58
Erich
Hi Anton,
auch wenn das Problem wohl gelösgt ist:
Mit eigentlich recht einfachen Mitteln geht das sowohl in Excel aus auch in VBA.
Hier eine Excel-Variante:
Formeln der Tabelle |
Zelle | Formel | BD3 | =2*RECHTS(BD2;13)+(BE3>9999999999999) | BE3 | =2*RECHTS(BE2;13)+(BF3>9999999999999) |
|
| A | B | C | D |
2339 | 2337 | | 32 | 1439961009182 |
2340 | Ende | | 32 | 1439961009182 |
Formeln der Tabelle |
Zelle | Formel | C2339 | =2*RECHTS(C2338;13)+(D2339>9999999999999) | D2339 | =2*RECHTS(D2338;13)+(E2339>9999999999999) | C2340 | =RECHTS(C2339;12) | D2340 | =RECHTS(D2339;13) |
|
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Die Zellen C2:BD2 werden manuell mit Nullen gefüllt, in BE2 wird eine 1 eingetragen.
Die Formel von BE3 kann nach links buis Spalgte C und nach unten bis Zeile 2339 kopiert werden.
In BE2340 schreibe ich eine 13 (Teilstring-Länge), die Formel von D2340 wird nach rechts kopiert bis Spalte BE.
Und hier das 704stellige Ergebnis von 2^2337:
123456789.123456789.123456789.123456789.123456789.
32143996100918228631377573728565002330155315544549
38742601048776602964152989056104976952810073391521
93868920566157506143365959000690380188952735256655
45407654991782769445984580062080690320579889848497
45887798882427468286121821488233477062561950422043
44586930974387847411617618901495030877762027155910
34042361504313171404964688917650762807420059549505
34019642832523138019771163290280582312231783255707
19181525291862084406717945516872102975068904089052
24708277247402662025845146261955815701787360389847
78059296744619769450652546585192040836180887969847
52035131485501241569623844705662366705386405144873
23205966780581563892203228268251546911032574664715
97419721936533651065551571773686421887276454465712
9472
Und nun noch eine VBA-Lösung.
Die kann man einfach auf ein leeres Blatt laufen lassen:
Sub ZweiHochViel()
Dim nn As Integer, ss As String, ii As Integer, zz As Long
Dim dd As Double, ee As String, tt As String, pp As Integer
nn = 40 ' Beginn mit kleinerem nn geht auch
ss = 2 ^ nn
With Sheets("mitVBA")
For nn = 40 To 2337
pp = 0
ee = ""
zz = zz + 1
.Cells(zz, 1) = nn
.Cells(zz, 2) = Len(ss)
.Cells(zz, 3) = ss
For ii = Fix((Len(ss) - 1) / 10) To 0 Step -1
tt = Mid(ss, 10 * ii + 1, 10)
dd = 2 * tt + pp
pp = -(Len(CStr(dd)) > Len(tt))
If ii = 0 Then
ee = dd & ee
Else
ee = Right(Format(dd, "00000000000"), Len(tt)) & ee
End If
Next ii
ss = ee
Next nn
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich