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

Lebenserleichternde Datei, im Bezug auf die Essensauswahl

Forumthread: Lebenserleichternde Datei, im Bezug auf die Essensauswahl

Lebenserleichternde Datei, im Bezug auf die Essensauswahl
25.09.2025 21:59:48
Martin Pöhli
Hallo Forumsgemeinde,
mein Name ist Martin, bin 46 Jahre, komme aus Oberösterreich und kämpfe aktuell mit einer Idee die ich via Excel-Datei verwirklichen möchte.

Die Problembeschreibung bzw. der Grund dieser Idee ist schnell erklärt. Meine Frau nervt mich fast täglich was wir die nächsten Tage zu Mittag essen möchten.
Da mir mittlerweile die Ideen ausgegangen sind, dachte ich mir ich bastle mir eine Datei die ich immer wieder leicht erweitern kann und die mir eine Auswahl im Zufallsprinzip erstellt, aber unter bestimmten Kriterien Filtern kann.
Die Datei hab ich mal beigefügt und hoffe nun das mir bei den noch fehlenden Formeln wer weiterhelfen kann.

Problembeschreibung:
Wenn ich im Reiter Auswahl in der Zeile 9 eine Auswahl treffe (es müssen nicht zwingend alle Felder ausgefüllt werden), greift die Formel auf den Reiter Liste zu, selektiert die Kriterien und erstellt Abghängig von den Vorgaben 5 Gerichte nach dem Zufallsprinzip.

Den Butten RESET habe ich bereits ohne Hilfe geschafft ;-)

Die Datei habe ich unter nachfolgenden Link hochgeladen:
https://www.herber.de/bbs/user/179062.xlsm

Danke im Voraus für eure Unterstützung
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lebenserleichternde Datei, im Bezug auf die Essensauswahl
25.09.2025 22:23:52
Bernhard
Mein Tipp: cookidoo mit dem Thermomix.
AW: Lebenserleichternde Datei, im Bezug auf die Essensauswahl
25.09.2025 23:35:29
Onur
Was bedeutet überhaupt "beide"? Dass beide es kochen können (A oder B) oder dass es beide zusammen kochen müssen (A und B) ?
AW: Lebenserleichternde Datei, im Bezug auf die Essensauswahl
26.09.2025 00:54:01
Yal
Hallo Martin,

Excel stellt viele Möglichkeiten zur Verfügung. Dabei ist immer ein paar Tipps zu beachten:
wenn es schön aussieht, macht es oft komplizierter zu verarbeiten.

In deinem Fall, folgende Korrekturen:
im Blatt "Liste" (die eigentlich "Speisen" heissen könnte, da in "Auswahl" auch eine "Liste" steht, oder?),
- die leere Spalte G löschen,
- die Fenster-Fixierung aufheben und alle Zeilen einblenden
- die erste Zeile (Überschrift-Zeile) markieren, ausschneiden und direkt über die Speiseliste (also in Zeile 8) einfügen
- ein Überschrift in Zelle A8 ("Nr") eingeben.
- die Zeile mit Nummer aber ohne Inhalt löschen (wird sonst stören)
- auf diese Zelle bleiben und Menü "Start", "Als Tabelle formatieren". Der Berreich A8:K48 wird automaisch erkannt.
- Du hast jetzt eine Tabelle und wenn Du "drauf" bist (wenn deine aktive Zelle eine Zelle dieser Tabelle ist) erscheint die Kontextmenü "Tabellenentwurf". Hier sineht man auch die Unterschied zwischen ein "Blatt" und eine "Tabelle".
- Darin die Tabellenname "Tabelle1" in "tblSpeisen" ändern (ist aber nicht gross relevant, ausser für diese Beschreibung)
- in L8 den Überschrift "Zufall" eintragen. Es fügt sich eine neue Spalte in der Tabelle, weil eben eine Tabelle
- in L9 die Formel =ZUFALLSZAHL() eintragen. Diese Formel füllt sich in die ganze Spalte, weil Tabelle.

- im Blatt "Auswahl" den Bereich B11:C16 markieren und die Zellenverbindung löschen (wenn Du irgendwas haben möchte, was nicht "einfach" funktioniert, verbinde Zellen!)
- Überschrift "Gericht" von B11 nach C11 versetzen
- Zellen A11:C16 leeren. Der übrige Anzeigebereich ist dann C12:G16

in VBA-Editor wechseln,
Modul2 entfernen
in Modul1 folgende Code einfügen:
Sub Zufall_sortieren()

'
' Zufall_sortieren Makro
'
Application.Calculate
With ActiveWorkbook.Worksheets("Liste").ListObjects("tblSpeisen").Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("tblSpeisen[[#All],[Zufall]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub


Sub Gericht_auflisten()
Dim LC As ListColumn
Dim LR As ListRow
Dim i
Dim Auswahl

'Zielbereich leeren
Worksheets("Auswahl").Range("C12:G16").ClearContents
'Zufall generieren
Zufall_sortieren
'Auswahl lesen
Auswahl = Worksheets("Auswahl").Range("B9:F9").Value

With Range("tblSpeisen").ListObject
'Filter auf Speisen zurücksetzen
For Each LC In .ListColumns
.Range.AutoFilter Field:=LC.Index 'Filter resetten
Next
'Auswahl als Filter einsetzen
For i = 1 To UBound(Auswahl, 2)
If Auswahl(1, i) > "" Then .Range.AutoFilter Field:=i + 1, Criteria1:=Auswahl(1, i)
Next
'Lesen und übertragen
i = 1
For Each LR In .ListRows
If Not LR.Range.EntireRow.Hidden Then
LR.Range.Range("G1:K1").Copy Worksheets("Auswahl").Cells(11 + i, 3) 'G1:k1 ist eine relative Adressierung. "1" entspricht die ListRow
i = i + 1
If i > 5 Then Exit For
End If
Next
End With
End Sub

VBA-Editor schliessen.
Im Blatt "Auswahl" die Schaltfläche "Filter" rechtsklicken, "Makro zuweisen" und Makro "Gericht_auflisten" zuweisen.
Datei speichern.
Fertig.

Das Gesamt sieht dann so aus: https://www.herber.de/bbs/user/179064.xlsm

Es kommt in der aktuelle Stand öfter vor, dass keine Speise die Filterung entspricht. Dann hat man eine leere Auswahlliste.

VG
Yal

Anzeige
AW: Lebenserleichternde Datei, im Bezug auf die Essensauswahl
26.09.2025 15:04:54
daniel
Hi

ohne VBA so

1. Ergänze auf dem Blatt "Liste" in der Spalte G folgende Formel, dh Formel in G9, Eingabe mit STRG+SHIFT+ENTER abschließen, dann Formel bis zum letzten Gericht nach unten ziehen:
=WENN(SUMME((Auswahl!$B$9:$F$9=B9:F9)+(Auswahl!$B$9:$F$9=""))=5;ZUFALLSZAHL();"")

die Formel schreibt eine Zufahlszahl in die Zelle, wenn deine Filterauswahl zutrifft

2. Schreibe im Blatt "Auswahl" in die erste Zelle der Liste (B12) die Formel und kopiere sie nach unten
=WENNFEHLER(INDEX(Liste!H:H;VERGLEICH(KKLEINSTE(Liste!$G:$G;ZEILE(A1));Liste!$G:$G;0))&"";"")

beim nach rechts kopieren musst du aufpassen, weil du eine Verbundzelle hast, dh du kannst die Formel nicht einfach nach rechst ziehen, sondern musst erstamal von Zelle B in die Zelle D kopieren, dort dann aus "Index(Liste!J:J...)" das machen : "Index(Liste!I:I;...) und dann diese Formel nach rechts ziehen.

du bekommst dann immer eine Liste mit 5 zufälligen Gerichten, die zu deiner Filterauswahl passen.
achtung, die Zufallzahlen und damit die Liste ändern sich bei jeder Änderung, die du im Blatt machst.
Wenn dir eine Auswahl gefällt, solltest du sie kopieren und an anderer Stelle als Wert einfügen.

Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige