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

Array mit 2000 Quadatzahlen

Array mit 2000 Quadatzahlen
alifa
Hallo Forum,
wie kann man ein Array mit den ersten 2000 Quadratzahlen füllen? Geht das überhaupt? Also die Zahlen sind dann: 1,4,9,16.....3992004,3996001,4000000 oder 1,4,9,4^2,....1998^2,1999^2,2000^2. Kann man die Zahlen in Spalte A schreiben und dann für das Array aufrufen?
Danke im Voraus
Erhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Array mit 2000 Quadatzahlen
27.01.2011 11:26:07
Rudi
Hallo,
wieso sollte das nicht gehen?
Sub Quadrate()
Dim arrQ(1 To 2000), i As Integer
For i = 1 To 2000
arrQ(i) = i ^ 2
Next
End Sub

Gruß
Rudi
AW: Array mit 2000 Quadatzahlen
27.01.2011 12:17:24
Martin
Hallo Rudi,
wenn du in die letzte Zeile vor dem End Sub folgende Zeile schreibst...
 Range("A1:A2000") = Application.Transpose(arrQ)

...dann stehen alle Werte in Spalte A. Das war zwar nicht die Fragestellung, aber beim Level "Kaum Excel/VBA-Kenntnisse" wollte ich es doch erwähnen.
Viele Grüße
Martin
AW: Array mit 2000 Quadatzahlen
27.01.2011 13:25:26
alifa
es ist etwas komplizierter...
das Array ist in einem Makro eingebunden. Dieses bildet alle 2-er Kombinationen, die Folgendes erfüllen:
s=a^2+b^2; a und b sind Teile einer Kombination. Z.B. 5525=7^2+74^2=14^2+73^2...
Für die Kombination braucht man ein Zahlenpool. Wie beim Lotto, dort alle Zahlen von 1 bis 49. In meinem Makro die Quadratzahlen von 1 bis 2000. Dafür brauche ich das Array. Hier der Link.
https://www.herber.de/bbs/user/73277.xlsm
VG
Erhard
Anzeige
hab kein 2007 owT
27.01.2011 13:46:59
Rudi
AW: hab kein 2007 owT
27.01.2011 14:43:28
Reinhard
Hallo Rudi,
Blätter sind völlig leer, in einem Standardmodul ist nachfolgender Code.
@Alifa
änder mal
Dim vSrc()
...
vSrc() = v ^ 2
in
Dim vSrc(1999)
...
vSrc(v - 1) = v ^ 2
Gruß
Reinhard
Option Explicit
Sub KombiMitArray()
Dim i As Long, u As Double, lngR As Long, lngSum As Long
Dim n As Byte, k As Byte, j As Long, s, t!, v
Dim vSrc()
t = Timer
For v = 1 To 2000
vSrc() = v ^ 2
Next
For s = 10000 To 20000
k = 2
n = 2001
u = (n / 2) * (n - 1)
ReDim vRes(k - 1)
ReDim bPos(k - 1) As Byte
For i = 1 To k
bPos(i - 1) = i
Next
Application.ScreenUpdating = False
With ActiveSheet
For i = 1 To u
lngSum = 0
For j = 0 To UBound(bPos)
vRes(j) = vSrc(bPos(j) - 1)
lngSum = lngSum + vRes(j)
Next
If lngSum = s Then
lngR = lngR + 1
.Range(.Cells(lngR, 1), .Cells(lngR, k)).Value = vRes
Cells(lngR, 3) = s
End If
Call GetComb(n, k, bPos)
Next
End With
Next
Application.ScreenUpdating = True
MsgBox "fertig in " & Round(Timer - t, 2) & " Sek "
End Sub
Sub GetComb(ByVal n As Byte, ByVal k As Byte, bPos() As Byte)
Dim i As Byte, j As Byte
i = k - 1
Do While bPos(i) >= n - k + i + 1
If i = 0 Then Exit Do
i = i - 1
Loop
bPos(i) = bPos(i) + 1
For j = i To k - 1
bPos(j) = bPos(i) + j - i
Next
End Sub

Anzeige
AW: hab kein 2007 owT
27.01.2011 17:52:20
alifa
Hallo,
das klappt jetzt!!!
Vielen Dank für die kompetente Hilfe!!!
Erhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige