Seite 1 von 1

"gewichtete" Namensliste

Verfasst: Fr 24. Okt 2025, 11:25
von Heringsangler
Hallo liebes Forum,

ich scheitere an folgender Aufgabe:

Ich habe eine Tabelle mit bis zu zwölf Namen und in der Nebenzelle eine "Gewichtungszahl" zu jedem Namen. Also etwa

Tomas | 2
Nico | 1
Felix | 4
Manu | 0
Alex | 2

Daraus soll eine Liste mit 70 Einträgen mit diesen Namen entstehen, wobei die Namen untereinander immer sooft auftauchen sollen, wie die Zahl es angibt. Die Liste soll sich dann wiederholen, also in dem Beispiel

Tomas
Tomas
Nico
Felix
Felix
Felix
Felix
Alex
Alex
Tomas
Tomas
Nico
Felix
… usw

Ich habe zunächst mit irrwitzigen "Wenn"-Verknüpfungen gearbeitet. Das war bisher zwar noch nicht von Erfolg gekrönt, ich könnte mir aber vorstellen, dass ich das damit irgenwie noch schaffen kann. Die Frage ist aber, ob es nicht eine deutlich einfachere Variante gibt. Mir fehlt allerdings der Ansatz.

Hat jemand eine Idee? Vielen Dank schon einmal im Voraus und herzliche Grüße!

Hauke

Re: "gewichtete" Namensliste

Verfasst: Fr 24. Okt 2025, 12:08
von karolus
Hallo

Nimm in C1 die Formel:

Code: Alles auswählen

=WIEDERHOLEN(A1&ZEICHEN(13);B1)
»ziehe« die Formel nach unten soweit wie nötig, selektiere Spalte C und gehe zu ⇒Daten⇒Text in Spalten ⇒⇒OK

fertisch!!

Es bleibt aber die Frage: Was ist die Aufgabe hinter deiner »gewichtet wiederholten Namensliste«???

Re: "gewichtete" Namensliste

Verfasst: Fr 24. Okt 2025, 13:33
von Heringsangler
Super, das ist ein cooler Ansatz. Danke! Jetzt muss ich nur noch die Leerzeilen eliminieren. Ich habe die Formel leicht zu

=WENN(B1=0;"";WIEDERHOLEN(A1&ZEICHEN(13);B1-1)&A1)

angepasst, sodass nicht am Ende jeweils auch noch ein Tab ist. Dadurch sind schon einmal die Leerzeilen zwischen den Namen weg. Es bleibt die Leerzeile für "Manu | 0", die ich mir noch nicht so recht erklären kann ("Leere Zellen überspringen" bei "Text in Spalten" hat keine Auswirkung). Aber ich kann ihn auch einfach weglassen, dann habe ich kein Problem. Für mich passt das jetzt so. Danke!

Wofür das Ganze? Ich brauche einen Verteilungsplan für Akten je nach Wochenarbeitszeit der Kollegen. Wer 40 Stunden arbeitet, bekommt eine "8", wer 30 Stunden arbeitet eine "6", wer in Elternzeit ist ein "0". Die Namensliste dient dann als Ausdruck dem Eintrag der jeweiligen neuen Akte. Die ersten zwei Akten bekommt im Beispiel also Tomas, die nächste Nico, dann 4x Felix, 2x Alex und dann geht es wieder von vorne los.

Re: "gewichtete" Namensliste

Verfasst: Fr 24. Okt 2025, 13:53
von karolus
Die Leerzeilen könntest du per ⇒Daten⇒Autofilter auf Spalte C rausfiltern

Re: "gewichtete" Namensliste

Verfasst: Fr 24. Okt 2025, 14:27
von echo
Hallo
hatte eine Idee und wollte schauen ob das als Formellösung funktioniert.
Der Ansatz ist eine Formel für "Text in Spalten" und die von karolus
Gruß Holger

NACHTRAG:
Sorry: Ich habe bemerkt, das falsch getrennt wird, wenn noch einige Namen dazu kommen.
Das habe ich noch mal angepasst

Re: "gewichtete" Namensliste

Verfasst: Fr 24. Okt 2025, 15:23
von Heringsangler
Sehr cool! Danke für Eure Hilfe!

Re: "gewichtete" Namensliste

Verfasst: Fr 24. Okt 2025, 15:30
von karolus
Hallo
@Holger: Oh…ha, ziemlich wilde Formel, da werfe ich meine prozedurale python-lösung auch mal rein:

Code: Alles auswählen

def repeat(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    data = (sel:=doc.CurrentSelection).DataArray
    sheet = sel.Spreadsheet
    out = []
    for name, count in data:
        out.extend( [[name]] * int(count) )    
    sheet[f"D1:D{len(out)}"].DataArray = out

Re: "gewichtete" Namensliste

Verfasst: Sa 25. Okt 2025, 08:44
von karolus
Hallo

Vieleicht eine etwas einfachere Formellösung:
Eine Hilfszelle (z.B. E1 ) mit der Formel:

Code: Alles auswählen

{=VERBINDEN("|";1;WIEDERHOLEN(A1:A100&"|";B1:B100))}
und dann ab C1:

Code: Alles auswählen

=WENNNV(REGAUS($E$1 ; "[^|]+" ;; ZEILE());"")