Zahlen in bestimmten Mustern anordnen bei Excel?

...komplette Frage anzeigen

3 Antworten

Sinnvollerweise würde ich soetwas (in einer beliebigen) Programmiersprache programmieren, das ist wohl weniger Aufwand, als ein anderes Programm dazu zu bringen, deinen Regeln zu folgen. (Natürlich wäre das etwa auch als Makro in Excel möglich)

Die Zellen wären die Datenfelder eines 2-Dimensionalen Arrays.

Ein Pseudoprogramm würde etwa so aussehen:

Zeile :=1
Spalte :=1
Wert = 1

Schreibe Wert in Zeile/Spalte
Wert := Wert+1

Label RECHTS

Spalte = Spalte +1  //nach rechts gehen
Schreibe Wert in Zeile/Spalte
Wert := Wert+1

Solange Spalte > 1 {  //nach links unten gehen
Zeile = Zeile +1
Spalte = Spalte -1
Schreibe Wert in Zeile/Spalte
Wert := Wert+1}

Zeile = Zeile +1   //nach unten gehen
Schreibe Wert in Zeile/Spalte
Wert := Wert+1

Solange Zeile > 1 {  //nach rechts oben gehen
Zeile = Zeile - 1
Spalte = Spalte +1
Schreibe Wert in Zeile/Spalte
Wert := Wert+1}

Wenn Wert<Endwert springe zu Label Rechts

Antwort bewerten Vielen Dank für Deine Bewertung
Iamiam 01.10.2016, 20:23

DH!, nochmal eine andere Interpretation!

@ densch: du siehst, jetzt haben sich (bisher schon) drei Leute den Kopf zerbrochen und unterschiedliche Lösungen angedacht, jetzt sei so gut und beschreibe noch etwas genauer, was Du Dir darunter vorgestellt hast!

Übrigens musste ich directupload stoppen, um überhaupt weiterarbeiten zu können!

0
densch92 02.10.2016, 13:13
@Iamiam

Naja, ich weiß nicht wirklich genau was es da näher zu beschreiben gibt.

Ich will nur die natürlichen Zahlen in einem Muster anordnen (beispielhaft das oft erwähnte Zickzackmuster)
und das möglichst automatisch weil ich keine Lust habe, 200+ Zahlen von Hand einzutippen.

Mal wieder ein Bild, wie sowas in Excel aussehen sollte:
http://www.bilder-upload.eu/show.php?file=f5699c-1475406980.png

(Ignoriert den blauen Rand)

Nur sollen es eben nicht nur 100 Zahlen oder so sein sondern ich hätte das ganze gerne so eingetragen für die ersten 1000 Zahlen oder so.

beispielsweise.

Da meine Frage offenbar doch viel uneindeutiger ist, wie erwartet, fangen wir mal mit einer einfachen frage an:
Kann man in Excel irgendwie den aktuellen Zeilen oder spaltenwert einer Zelle abfragen und dann diesen in einer Formel verarbeiten?

0

Ich kann keinerlei Systematik in Deinem Muster entdecken, evtl Diagonalen -aber auch Zwischenzeilen?

Zahlen setzen kannst du ohnehin nur mit einem Makro. Statistisch verteilt kannst Du sowas erreichen für Felder beliebiger Größe (s=Spaltenzahl, z=Zeilenzahl, za = 1.Zeile, sa = 1.Spalte) mit einer Makroschleife für n Items:

Kernbefehl:

  • For i = 1 to n
  • Activesheet.Cells(int(Rnd() * z) + za, int(Rnd() * s) + sa).value = i
  • next i

(Da kann es aber vorkommen, dass eine schon beschriebene Zelle nochmal beschrieben wird, die erste Zahl also verschwindet.)

Wenn es das ist, was du suchst., programmiere ich Dir auch noch eine Prüfung, die das verhindert, nur verkompliziert jeder Zusatzschritt erheblich.

Also gib Rückmeldung, vorher mach ich nix!

Oder beschreibe genauer, nach welchem System Du die Zahlen gesetzt haben willst.

Verwandtes Problem: Ein kleines Lotto-Programm hab ich früher schon mal gemacht.

Antwort bewerten Vielen Dank für Deine Bewertung
Iamiam 01.10.2016, 21:02

der zentrale Befehl geht auch noch viel kürzer, wenn Du den Bereich vorher markierst(Selection) oder benennst (ggf auch in einer Variablen "settest"):

  • Selection.Cells(Rnd() + 1).value = i

(wobei Du Dir das .value auch noch sparen könntest, das ist nämlich das Standardargument, aber der Klarheit wegen tu ichs immer rein.

0

Aus dem Bild kann ich kein echtes Muster erkennen... ich bin auch kein Mathematiker, der elegante Formeln formulieren kann. Das musst Du als Voraussetzung, um das in einem Programm abbilden zu können eigentlich schon machen.

Eine Variante auf die Schnelle:


Sub schraegezahlen()
Dim x, y, i As Integer
i = 1
x = 1
y = 1
Cells(y, x).Value = i
While i < 100

'eins runter
i = i + 1
y = y + 1
Cells(y, x).Value = i
'hoch und rechts bis die obergrenze erreicht ist
While y > 1
i = i + 1
y = y - 1
x = x + 1
Cells(y, x).Value = i
Wend
'eins rüber
i = i + 1
x = x + 1
Cells(y, x).Value = i
'runter und links bis der seitliche rand erreicht ist
While x > 1
i = i + 1
y = y + 1
x = x - 1
Cells(y, x).Value = i
Wend
Wend

End Sub

malt folgendes Bild. Die Begrenzung auf die Zahlen bis 100 funktioniert, wie man sieht, noch nicht richtig, es wird die letzte Reihe noch zu Ende geschrieben.


Edit: Das Bild ist leider nicht das richtige, da waren x und y noch verdreht. Sieht aber ähnlich aus

 - (Excel, Muster, Symmetrie)
Antwort bewerten Vielen Dank für Deine Bewertung
Iamiam 01.10.2016, 20:19

DH! so kann man die Aufgabenstellung auch sehen!

bei ungenau formulierten Anforderungen ist die Interpretation in jede Richtung denkbar: ich hab in Richtung statistische Verteilung gedacht!

0

Was möchtest Du wissen?