in der Spalte A sind 90 Zeilen, mit 4- bis 6-stelligen Zahlen. Wie kann ich mit einem Makro erreichen, dass jeweils neben jede Zahl,(Spalte B) alle Teiler geschrieben werden?
Option Explicit
Sub Teiler()
Dim LoLetzte As Long
Dim LoI As Long
Dim LoJ As Long
Dim InSpalte As Integer
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
For LoI = 1 To LoLetzte
If IsNumeric(Cells(LoI, 1)) Then
InSpalte = 2
For LoJ = Cells(LoI, 1) To 1 Step -1
If Cells(LoI, 1) / LoJ = CInt(Cells(LoI, 1) / LoJ) Then
Cells(LoI, InSpalte) = LoJ
InSpalte = InSpalte + 1
If InSpalte > Columns.Count Then
MsgBox "nicht genügend Spalten"
Exit For
End If
End If
Next LoJ
End If
Next LoI
End Sub
Gruß Hajo
Sub test()
Dim X As Long, i As Long, strDiv As String
For Z = 1 To 90
X = Cells(Z, 1)
strDiv = ""
For i = 2 To Int(X / 2)
If X Mod i = 0 Then strDiv = strDiv & ", " & i
Next
Cells(Z, 2) = Mid$(strDiv, 3)
Next
End Sub
| A | B | |
| 1 | 9364 | 1, 9364, 2, 4682, 4, 2341 |
| 2 | 50033 | 1, 50033 |
| 3 | 76486 | 1, 76486, 2, 38243, 167, 458, 229, 334 |
| 4 | 117545 | 1, 117545, 5, 23509 |
| 5 | 227671 | 1, 227671 |
| 6 | 264671 | 1, 264671, 11, 24061 |
| 7 | 291488 | 1, 291488, 2, 145744, 4, 72872, 8, 36436, 16, 18218, 32, 9109 |
| 8 | 326184 | 1, 326184, 2, 163092, 3, 108728, 4, 81546, 6, 54364, 8, 40773, 12, 27182, 24, 13591 |
| 9 | 358931 | 1, 358931 |
| 10 | 385174 | 1, 385174, 2, 192587 |
| 11 | 391545 | 1, 391545, 3, 130515, 5, 78309, 7, 55935, 9, 43505, 11, 35595, 15, 26103, 21, 18645, 33, 11865, 35, 11187, 45, 8701, 55, 7119, 63, 6215, 77, 5085, 99, 3955, 105, 3729, 113, 3465, 165, 2373, 231, 1695, 315, 1243, 339, 1155, 385, 1017, 495, 791, 565, 693 |
| 12 | 398613 | 1, 398613, 3, 132871, 23, 17331, 53, 7521, 69, 5777, 109, 3657, 159, 2507, 327, 1219 |
| 13 | 446013 | 1, 446013, 3, 148671, 9, 49557, 27, 16519 |
| 14 | 477100 | 1, 477100, 2, 238550, 4, 119275, 5, 95420, 10, 47710, 13, 36700, 20, 23855, 25, 19084, 26, 18350, 50, 9542, 52, 9175, 65, 7340, 100, 4771, 130, 3670, 260, 1835, 325, 1468, 367, 1300, 650, 734 |
| 15 | 489048 | 1, 489048, 2, 244524, 3, 163016, 4, 122262, 6, 81508, 7, 69864, 8, 61131, 12, 40754, 14, 34932, 21, 23288, 24, 20377, 28, 17466, 41, 11928, 42, 11644, 56, 8733, 71, 6888, 82, 5964, 84, 5822, 123, 3976, 142, 3444, 164, 2982, 168, 2911, 213, 2296, 246, 1988, 284, 1722, 287, 1704, 328, 1491, 426, 1148, 492, 994, 497, 984, 568, 861, 574, 852 |
| 16 | 552851 | 1, 552851, 13, 42527, 23, 24037, 43, 12857, 299, 1849, 559, 989 |
| 17 | 557012 | 1, 557012, 2, 278506, 4, 139253, 131, 4252, 262, 2126, 524, 1063 |
| 18 | 590285 | 1, 590285, 5, 118057 |
| 19 | 645669 | 1, 645669, 3, 215223, 9, 71741 |
| 20 | 653786 | 1, 653786, 2, 326893, 7, 93398, 14, 46699, 17, 38458, 34, 19229, 41, 15946, 67, 9758, 82, 7973, 119, 5494, 134, 4879, 238, 2747, 287, 2278, 469, 1394, 574, 1139, 697, 938 |
| 21 | 741130 | 1, 741130, 2, 370565, 5, 148226, 10, 74113, 13, 57010, 26, 28505, 65, 11402, 130, 5701 |
| 22 | 786560 | 1, 786560, 2, 393280, 4, 196640, 5, 157312, 8, 98320, 10, 78656, 16, 49160, 20, 39328, 32, 24580, 40, 19664, 64, 12290, 80, 9832, 128, 6145, 160, 4916, 320, 2458, 640, 1229 |
| 23 | 800595 | 1, 800595, 3, 266865, 5, 160119, 9, 88955, 15, 53373, 45, 17791 |
| 24 | 804562 | 1, 804562, 2, 402281, 11, 73142, 22, 36571 |
| 25 | 825211 | 1, 825211, 37, 22303 |
| 26 | 827179 | 1, 827179, 239, 3461 |
| 27 | 843732 | 1, 843732, 2, 421866, 3, 281244, 4, 210933, 6, 140622, 9, 93748, 12, 70311, 18, 46874, 23, 36684, 36, 23437, 46, 18342, 69, 12228, 92, 9171, 138, 6114, 207, 4076, 276, 3057, 414, 2038, 828, 1019 |
| 28 | 884586 | 1, 884586, 2, 442293, 3, 294862, 6, 147431, 379, 2334, 389, 2274, 758, 1167, 778, 1137 |
| 29 | 954587 | 1, 954587, 499, 1913 |
| 30 | 956161 | 1, 956161, 41, 23321 |
| Formeln der Tabelle | ||||
|
Um alle Teiler einer Zahl in Excel zu finden, kannst du ein einfaches VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
Füge den folgenden VBA-Code in das Modul ein:
Option Explicit
Sub Teiler()
Dim LoLetzte As Long
Dim LoI As Long
Dim LoJ As Long
Dim InSpalte As Integer
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
For LoI = 1 To LoLetzte
If IsNumeric(Cells(LoI, 1)) Then
InSpalte = 2
For LoJ = Cells(LoI, 1) To 1 Step -1
If Cells(LoI, 1) / LoJ = CInt(Cells(LoI, 1) / LoJ) Then
Cells(LoI, InSpalte) = LoJ
InSpalte = InSpalte + 1
End If
Next LoJ
End If
Next LoI
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Gib in Spalte A die Zahlen ein, für die du alle Teiler finden möchtest.
Führe das Makro aus, indem du ALT + F8 drückst, das Makro Teiler auswählst und auf Ausführen klickst.
Die Teiler werden nun in der Spalte B neben den entsprechenden Zahlen angezeigt.
Fehler: "Nicht genügend Spalten"
Fehler: "Keine gültige Zahl"
Du kannst alle Teiler einer Zahl auch mit Excel-Formeln berechnen. Eine einfache Formel, um die Teiler zu finden, ist:
=TEXTJOIN(", ", TRUE, IF(MOD(A1, ROW(INDIRECT("1:"&A1)))=0, ROW(INDIRECT("1:"&A1)), ""))
Diese Formel nutzt TEXTJOIN und IF, um alle Teiler der Zahl in Zelle A1 zu finden. Achte darauf, dass du die Formel als Matrixformel eingibst, indem du STRG + SHIFT + ENTER drückst.
Hier sind einige Beispiele für häufige Zahlen und deren Teiler:
Diese Teiler kannst du leicht mit dem oben genannten Makro oder der Formel finden.
1. Wie kann ich die Anzahl der Teiler einer Zahl bestimmen? Du kannst die Anzahl der Teiler mit einer Variante des oben genannten Makros berechnen, indem du einfach einen Zähler hinzufügst.
2. Funktioniert das Makro auch mit großen Zahlen? Ja, das Makro kann auch große Zahlen verarbeiten, jedoch kann die Ausführung etwas länger dauern, je nach Anzahl der Teiler.