Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Primzahlen bestimmen

Primzahlen bestimmen
14.06.2018 17:04:44
Idence
Hallo,
ich habe folgenden Code geschrieben um Primzahlen gelb und Nicht-Primzahlen rot zu markieren. _ Das mathematische Verfahren ist nach dem Prinzip vom "Sieb des Eratosthenes". Die Zahlen sind von oben nach unten in der Spalte A.

Sub Sieb()
Dim n, zahl As Integer
Dim rngSuche As Range
Dim gefunden As String
On Error Resume Next
n = 1
Do While Cells(n, 1)  ""
If Cells(n, 1).Interior.Color  9013759 Then 'Farbe gelb
'erste Primzahl markieren
Cells(n, 1).Interior.Color = 10223615 'Farbe rot
'seine Vielfache bestimmen
Do While gefunden  "nein"
If zahl = 0 Then
zahl = Cells(n, 1)
End If
zahl = zahl + Cells(n, 1)
'Suche nach Zahl
Set rngSuche = Tabelle1.Range("A1:A1000").Find(what:=zahl, LookIn:=xlValues) _
_
_
'Rotfärbung, wenn gefunden
If Not rngSuche Is Nothing Then
Cells(rngSuche.Row, 1).Interior.Color = 9013759
Else
gefunden = "nein"
End If
Loop
n = n + 1
gefunden = ""
zahl = 0
Else
n = n + 1
End If
Loop
MsgBox "fertig"
End
Bis Zahl 1001 ermittelt dieser Code die richtigen Primzahlen, doch ab dieser Zahl glaubt er,  _
dass alles nur noch Primzahlen sind.
Hat jemand eine Idee, woran dies liegen könnte?
Gruß
Idence
Hier die Datei:
https://www.herber.de/bbs/user/122130.xlsm  _
_
_
a>


		
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Primzahlen bestimmen
14.06.2018 17:16:08
mmat
Interessanter Ansatz ;-)
Dein Problem ist hier, die Suche wird auf 1000 Zeilen Beschränkt
 Set rngSuche = Tabelle1.Range("A1:A1000").Find(what:=zahl, LookIn:=xlValues) 

AW: Primzahlen bestimmen
18.06.2018 09:46:20
Idence
Hallo mmat,
so einfach ist also die Lösung, das hatte ich komplett vergessen und habe an ganz anderen Stellen gesucht, vielen Dank für deine Erinnerung.
Gruß
Idence
Anzeige
AW: Primzahlen bestimmen
18.06.2018 14:38:05
mmat
Hallo,
ja, ich dachte mir schon, dass du das nur programmierst um mal zu sehen, wie das geht. Daher noch eine kleine Anmerkung: die ganze Suche ist überflüssig. Die zu färbende Zelle ist immer
Cells(zahl, 1)
- oder
Cells(zahl -1,1) '--> (wenn deine Liste mit 2 anfängt)
AW: Primzahlen bestimmen
14.06.2018 17:41:57
UweD
Hallo
wenn die Liste schon besteht dann so..

Tabelle1
 ABC
12 Wahr
23 Wahr
34 Falsch
45 Wahr
56 Falsch
67 Wahr
78 Falsch
89 Falsch
910 Falsch
1011 Wahr
1112 Falsch
1213 Wahr
1314 Falsch
1415 Falsch
1516 Falsch
1617 Wahr
1718 Falsch
1819 Wahr
1920 Falsch
2021 Falsch
2122 Falsch
die bedingte Formatierung Fülleffekte, Symbole, Datenbalken
werden in dieser Tabelle nicht dargestellt

verwendete Formeln
Zelle Formel Bereich N/A
C1:C21=IstPrim(A1)  

Bedingte Formatierung Haupttabelle 1  
Wird angewendet auf   Nr. Bed.  Regeltyp  Operator   Formel1   Formel2   Format Schrift Füll-farbe   Unterstrichen   Schrift- farbe Muster   Muster-farbe Typ Bereich
$A$1:$A$2201.Bed.: Formel ist =NICHT(IstPrim(A1))  255         2$A$1:$A$22
$A$1:$A$2202.Bed.: Formel ist =IstPrim(A1)  65535         2$A$1:$A$22
Bedingte Formatierung Haupttabelle 2 oberere/unterer Bereich    
Wird angewendet auf   Nr. Bed.  Format Zelle Anhalten Auswahl   Anzeige   Anzahl   Durchschnitt   Typ   Bereich
$A$1:$A$2201.Bed.   Falsch          2$A$1:$A$22
$A$1:$A$2202.Bed.   Falsch          2$A$1:$A$22
Die Bedingungen wurden mit Excel-Version ab 2007 ausgelesen.

Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.14 einschl. 64 Bit


Verwendet wird folgende kurze Function (nicht von mir)
Public Function IstPrim(Zahl) As Boolean
   Dim i As Double
   For i = 2 To Int(Sqr(Zahl))
      If Zahl Mod i = 0 Then
         IstPrim = False
         Exit Function
      End If
   Next i
   IstPrim = True
End Function

LG UweD
Anzeige
AW: Primzahlen bestimmen
18.06.2018 09:48:00
Idence
Hallo UweD,
danke sehr.
Gruß
Idence
AW: Primzahlen bestimmen
14.06.2018 21:56:55
Barbaraa
Falls Du nicht unbedingt auf eine Makrolösung wert legst:
Mit "Bedingte Formatierung"
Gehe in die Zeile 1 einer Spalte Deiner Wahl.
Rufe Bedingte Formatierung im Menü Start auf.
Rufe Neue Regel auf, dort Formel zur Ermittlung der zu formatierenden Zellen verwenden wählen.
Kopiere dort folgende Formel hinein:
=SUMME(VORZEICHEN(REST(ZEILE(A2);ZEILE(A1:A$2))))=ZEILE(A2)-2
Unter Formatieren, Ausfüllen wähle die Farbe Deines Geschmacks (ausser weiss und schwarz).
Drück OK sooft, bis Du wieder draussen bist.
Kopiere dann diese Zelle hinuter (auch in andere Spalten), soweit du willst.
Jetzt sind alle Zellen farblich markiert, deren Zeilennummer prim ist.
Vorteil: Du kannst dann in die Zeilen reinschreiben, was Du willst.
Nachteil: Das Reinschreiben dauert etwas.
Mit einer Formel:
Gehe in die Zelle A2 und drück die F2-Taste!
Kopiere folgende Formel hinein:
=WENN(SUMME(VORZEICHEN(REST(ZEILE(A2);ZEILE(A1:A$2))))=ZEILE(A2)-2;"prim";"")
Dann drück zugleich die STRG+Umschalttaste und lass nicht los.
Drück die Entertaste und lass alle Tasten aus.
Jetzt soll die Formel in der Bearbeitungszeile oben von zwei geschweiften Klammern umschlossen sein.
Kopiere diese Zelle wohin Du willst (auch in andere Spalten), nur nicht in Zeile 1 und nicht auf sich selbst.
Nun steht in jeder Zelle "prim", deren Nummer eine Primzahl ist.
Hilft das?
LGB
Anzeige
einfachere Formel
14.06.2018 22:26:28
WF
Hi,
statt
{=SUMME(VORZEICHEN(REST(ZEILE(A2);ZEILE(A1:A$2))))=ZEILE(A2)-2}
nimmst Du:
{=KKLEINSTE(REST(ZEILE(A2);ZEILE(X$1:X3));3)>0}
WF
AW: Primzahlen bestimmen
18.06.2018 09:52:33
Idence
Hallo Barbara,
da ich lieber einen Code schreibe, statt mit Excel-Formeln zu arbeiten, ist es mein Ziel gewesen, ein Makro hinzukriegen, der die Aufgabe bewältigt. Aber da mein "Fehler" in meinem Code gefunden wurde, ist alles wieder in Ordnung.
Vielen Dank für deine Hilfe.
Gruß
Idence
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Primzahlen in Excel bestimmen und formatieren


Schritt-für-Schritt-Anleitung

Um Primzahlen in Excel zu markieren, kannst du entweder VBA verwenden oder die bedingte Formatierung nutzen. Hier sind die Schritte für beide Methoden:

VBA-Methode:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > "Einfügen" > "Modul".

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub Sieb()
       Dim n, zahl As Integer
       Dim rngSuche As Range
       Dim gefunden As String
       On Error Resume Next
       n = 1
       Do While Cells(n, 1) <> ""
           If Cells(n, 1).Interior.Color <> 9013759 Then 'Farbe gelb
               Cells(n, 1).Interior.Color = 10223615 'Farbe rot
               Do While gefunden <> "ja"
                   If zahl = 0 Then
                       zahl = Cells(n, 1)
                   End If
                   zahl = zahl + Cells(n, 1)
                   Set rngSuche = Tabelle1.Range("A1:A1000").Find(what:=zahl, LookIn:=xlValues)
                   If Not rngSuche Is Nothing Then
                       Cells(rngSuche.Row, 1).Interior.Color = 9013759
                   Else
                       gefunden = "ja"
                   End If
               Loop
           End If
           n = n + 1
       Loop
       MsgBox "fertig"
    End Sub
  4. Schließe den Editor und führe das Makro aus.

Bedingte Formatierung:

  1. Wähle die Zelle A1 in Excel aus.

  2. Gehe zu "Start" > "Bedingte Formatierung" > "Neue Regel".

  3. Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden".

  4. Füge folgende Formel ein:

    =SUMME(VORZEICHEN(REST(ZEILE(A2);ZEILE(A1:A$2))))=ZEILE(A2)-2
  5. Wähle unter "Formatieren" die gewünschte Farbe aus und bestätige.

  6. Ziehe die Formatierung nach unten, um alle Primzahlen in der Spalte zu markieren.


Häufige Fehler und Lösungen

  • Problem: Der VBA-Code markiert zu viele Primzahlen.

    • Lösung: Stelle sicher, dass die Suche nicht über 1000 Zeilen beschränkt ist. Ändere Range("A1:A1000") auf Range("A1:A1048576"), um alle Zeilen zu durchsuchen.
  • Problem: Die bedingte Formatierung funktioniert nicht.

    • Lösung: Prüfe, ob die Formel korrekt eingegeben wurde und dass die Zellen, die formatiert werden sollen, in den richtigen Bereich fallen.

Alternative Methoden

  1. Formel zur Ermittlung von Primzahlen: Du kannst die Funktion IstPrim(Zahl) verwenden, um in einer Zelle zu überprüfen, ob eine Zahl eine Primzahl ist. Füge diese Funktion in ein Modul ein:

    Public Function IstPrim(Zahl) As Boolean
       Dim i As Double
       For i = 2 To Int(Sqr(Zahl))
           If Zahl Mod i = 0 Then
               IstPrim = False
               Exit Function
           End If
       Next i
       IstPrim = True
    End Function
  2. Direkte Eingabe: Schreibe in eine Zelle die Formel =WENN(IstPrim(A1), "prim", "") und ziehe sie nach unten, um die Primzahlen zu ermitteln.


Praktische Beispiele

Um alle Primzahlen zwischen 10 und 20 in Excel zu ermitteln, kannst du die bedingte Formatierung oder die oben genannten Methoden verwenden. In der Spalte A sollten die Zahlen 10 bis 20 stehen, dann werden die Primzahlen (11, 13, 17, 19) entsprechend markiert.


Tipps für Profis

  • Schnellere Berechnung: Verwende die Funktion SQR() innerhalb deiner Primzahl-Berechnungen, um die Anzahl der zu prüfenden Teilern zu reduzieren.
  • Datenvalidierung: Nutze die Datenvalidierung, um sicherzustellen, dass nur positive ganze Zahlen eingegeben werden können.
  • Erweiterte Analyse: Kombiniere die Ergebnisse mit Pivot-Tabellen, um eine umfassende Analyse der Primzahlen in deinem Datensatz durchzuführen.

FAQ: Häufige Fragen

1. Woran erkennt man Primzahlen? Eine Primzahl ist eine natürliche Zahl größer als 1, die keine positiven Teiler hat, außer 1 und sich selbst.

2. Kann ich Primzahlen in Excel automatisch ermitteln? Ja, sowohl mit VBA-Makros als auch mit bedingter Formatierung oder speziellen Excel-Formeln kannst du Primzahlen in einem Datensatz identifizieren.

3. Wie kann ich die Primzahlen zwischen 10 und 20 in Excel markieren? Nutze die oben beschriebene bedingte Formatierung oder das VBA-Skript, um die Primzahlen in diesem Bereich farblich hervorzuheben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige