Alle Kategorien
Suche

Sudoku mit Excel lösen - so gelingt's

So löst man Sudoku am Bildschirm.
So löst man Sudoku am Bildschirm.
Sie rätseln gerne und schreiben am liebsten nur Quelltexte? Wenn Sie ein wenig Erfahrung mit VBA in Excel haben, können Sie sich ein Makro zum Lösen eines Sudokus in Excel selbst erstellen. So gelingt's:

Was Sie benötigen:

  • Zeit
  • den Willen zu knobeln
  • leeres Papier
  • Stifte (eventuell auch farbig)
  • Sudoku-Feld der Größe 9x9

Die Spielregeln von Sudoku

Bevor Sie Excel öffnen, sollten Sie sich Gedanken darüber machen, wie Sie Ihr Ziel, Sudoku mit Excel zu lösen, erreichen können. Dafür fassen Sie am besten die Regeln des Spiels kurz zusammen:

  • In jeder Spalte dürfen die Ziffern 1 bis 9 genau einmal vorkommen.
  • In jeder Zeile dürfen die Ziffern 1 bis 9 genau einmal vorkommen.
  • In jedem 3x3-Feld dürfen die Ziffern 1 bis 9 genau einmal vorkommen, wobei sich die 3x3-Felder nicht überlappen dürfen. Es gibt genau neun 3x3-Felder auf dem Spielplan.

Struktur des Makros in Excel

Nun gilt es, eine Struktur für ein Makro zu erstellen. Dieses Makro besteht fast nur aus verschachtelten Schleifen.

  1. Außen ist eine Do-Until-Schleife sinnvoll. Sie gewährleistet, dass Ihr Programm nicht nur einmal durchläuft, sondern so lange, bis keine freien Felder mehr übrig sind. Sie starten die Schleife mit "Do Until freiesFeld=0". Dann kommen Ihre Anweisungen. Beenden können Sie diesen Programmierabschnitt mit "Loop".
  2. Als Nächstes kommt eine For-Schleife, welche von der ersten bis zur neunten Zeile wandert. In dieser Zeilen-Schleife befindet sich die Spalten-Schleife, die vom Prinzip her genauso aufgebaut ist. Jetzt kommt auch die erste konkrete Anweisung, bei der eine Zelle selektiert wird. Dazu können Sie den Befehl Worksheets("Tabelle1").Cells(Zeile, Spalte).Select verwenden.
  3. Nach dem ersten Befehl kommt die vierte Schleife. Diese gilt jetzt für die erste Spielregel. Annehmen können Sie die Herausforderung mit einer If-Anweisung. Dafür beginnen Sie mit "If 0 < ziffer < 10 Then", schreiben Ihre Anweisung und beenden diese mit "End If". Sollten Sie Zwischenbedingungen brauchen, können Sie auch "Else" vor Ihr "End If" schreiben und die entsprechende Anweisung dahinter. Einen Verweis auf die Nachbarzellen machen Sie am besten mit dem Befehl Offset(Zeile,Spalte). Möchten Sie eine Spalte tiefer, schreiben Sie Offset(-1,0).
  4. Das gleiche tun Sie mit der zweiten Spielregel. Sie können Ihren Quelltext später kopieren und müssen dann nur noch die Offset(Zeile,Spalte)-Funktion mit Offset(0,-1) modifizieren.
  5. Jetzt kommt noch ein schwieriger Teil. Ihr 3x3-Feld realisieren Sie am besten mit If-Anweisungen. Darin legen Sie fest, wo der jeweilige Startpunkt zum Prüfen liegen soll. Am einfachsten wählt man ihn oben links im Interessenbereich. Mit der Offset(Zeile,Spalte)-Funktion können Sie die übrig gebliebenen 4 Felder bearbeiten.

Zwischenstand: Der Kern Ihres Makros sind die Schleifen 4 bis 6, welche aufeinander folgen. Darum herum wickelt sich Schleife 3. Diese wird von Schleife 2 ummantelt. Und Ihr gesamtes Programm schließt Schleife 1 ein. Zählen Sie noch die Variablen, die Sie brauchen, und geben Sie ihnen sinnvolle Namen.

Sudoku-Makro in Excel schreiben

  1. Um jetzt ein Makro zu programmieren, benutzen Sie in einer neuen Excel-Arbeitsmappe die Tastenkombination "Alt+F8". Hier geben Sie Ihrem Makro für das zu lösende Sudoku einen Namen, z. B. "Sudoku". Anschließend wählen Sie den Button "Erstellen". Es öffnet sich der VBA-Editor.
  2. In die vorhandenen Grundelemente Ihres neuen Makros "Sudoku" basteln Sie jetzt Ihre Programmstruktur. Arbeiten Sie mit Einrückungen, um die Übersicht zu behalten. Die Variablen definieren Sie gleich am Anfang. So haben Sie sie komplett im Blick, sobald Sie es brauchen.
  3. Die Schleifen 4 bis 6, also der Kern Ihres Makros, überprüfen, ob die Zahl, mit der Sie gerade eine Zelle testen, den Spielregeln entspricht, und ob es nicht noch mehrere Lösungsmöglichkeiten für Ihr aktives Feld gibt. Vergessen Sie dabei nicht die Abfrage, ob Ihr aktives Feld nicht bereits belegt ist. Und zählen Sie jedes freie Feld mit, sollte es nicht gefüllt werden können. Nur so macht die Do-Until-Schleife Sinn.

Viel Erfolg beim Knobeln!

Teilen: