Mit Excel Teilermenge von Zahlen berechnen

Hallo Leute, bin leider etwas überfordert!

Ich möchte mit Excel die Teilermenge von allen Zahlen von 1 bis 1 Millionen berechnen.

Beispiel:

Die Zahl Vier ist durch 1,2,4 teilbar, hat also 3 Teiler. In der Tabelle möchte ich für die Zahl Vier dann gerne explizit „1,2,4“ aufgeführt haben. Außerdem „3“ in einer anderen Spalte, um die Anzahl der Teiler schnell zu haben.

Hier gibt es sowas schon von 1 bis 1000
http://en.wikipedia.org/wiki/Table_of_divisors

Wie macht Excel das für 1 bis 1 Millionen?

Vielen Dank für jede Hilfe!

Ich möchte mit Excel die Teilermenge von allen Zahlen von 1
bis 1 Millionen berechnen.

Hallo,

da kann ich dir auch nicht weiter helfen.

MfG

Johannes E.

Hey,
da kann ich dir leider nicht helfen

Hallo, es tut mir Leid, aber da kann ich nicht weiterhelfen.

Hallo Tortenbelag,

ich kann dir leider nicht helfen. Je größer die Zahl, desto höher die Anzahl der Teiler. Mit so einem Problem habe ich mich noch nicht beschäftigt und habe auch keine Idee, wie man es machen könnte. Im Prinzip kann man ja nur abfragen, ob die Zahl durch alle Zahlen kleiner 1 teilbar ist und diese dann ausgeben. In einer Spalte wird das definitiv nicht gehen, nur in mehreren Spalten. Mit einer wenn Funktion ist das aber nicht lösbar, da man dort nur 7 wenns verbinden kann. Man müsste also einen Makro schreiben. Das kann ich aber nicht. Die Anzahl der Teiler zu ermitteln, wenn alle Teiler feststehen ist mit Zählewenn dann einfach lösbar, wenn du es auf die Spalten verteilt hättest.

Hallo,

für Excel kenne ich keine Funktion.

http://de.wikipedia.org/wiki/Teileranzahlfunktion

Aber Gnumeric hat eine. Die heißt nt_d()

http://de.wikipedia.org/wiki/Gnumeric

Gruß

Ich möchte mit Excel die Teilermenge von allen Zahlen von 1
bis 1 Millionen berechnen.

Wie macht Excel das für 1 bis 1 Millionen?

Hallo,

denke nicht, das man das ohne VBA hinbekommt und
da kann ich nicht helfen. Denke da muss man Schleifen
programmieren in denen Excel die Zahlen und Möglichkeiten durchprobiert.
Eine andere Idee habe ich leider nicht.
Sorry.

LG
Tom

Hallo,

lässt sich am einfachsten über ein Makro realisieren. Die Berechnung dauert allerdings etwas aufgrund des großen Zahlenraums.
Einfach den folgenden Code in ein neues Makro einfügen und ausführen lassen:

Sub teiler()

’ Teiler Makro


Dim id As Long
Dim teiler As Long
Dim erg As String
Dim zeile As Long
Dim intIndex As Integer
Dim max As Long

max = 1000000
On Error GoTo err_exit
Application.EnableCancelKey = xlErrorHandler

'switch of updating to speed your code & stop irritating flickering
Application.ScreenUpdating = False

'Use the Status Bar to inform user of the macro’s progress
'change the cursor to hourglass
Application.Cursor = xlWait
’ makes sure that the statusbar is visible
Application.DisplayStatusBar = True
'add your message to status bar
Application.StatusBar = „Formatting Report…“

erg = „“
MsgBox „Funktion kann über Tastenkombination + ESC abgebrochen werden“

For id = 1 To max
erg = „“
zeile = id + 1
Range(„A“ & zeile).FormulaR1C1 = id
For teiler = 1 To id
If id Mod teiler = 0 Then
If erg = „“ Then
erg = teiler
Else
erg = erg & ", " & teiler
End If
End If

If id Mod 100 = 0 Then Application.StatusBar = "Aktuell bearbeitet " & id & " - ca. " & Abs(id / max * 100) & „%. Abruch durch + ESC möglich.“
DoEvents
Next teiler

Range(„B“ & zeile).FormulaR1C1 = erg
Range(„C“ & zeile).FormulaR1C1 = Len(erg) - Len(Replace(erg, ", ", " ")) + 1
Next id

MsgBox „Fertig“
sub_exit:

'restore default cursor

Application.Cursor = xlDefault
’ gives control of the statusbar back to the programme
Application.StatusBar = False

Application.ScreenUpdating = True
Application.EnableCancelKey = xlInterrupt
Exit Sub
err_exit:
If Err.Number = 18 Then
If MsgBox(„Wirklich abbrechen?“, vbCritical + vbYesNo, _
„Abbruch“) = vbNo Then Resume
Else
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, „Fehler“
End If
Resume sub_exit
End Sub

Viele Grüße
Chris