Kombinatorik Excel

Hallo, ich möchte gerne aus Excel mir alle Möglichkeiten aus ABCDE ausgeben, allerdings ohne Wiederholungen. Habe bereits folgende Formeln eingegeben, aber erhalte nur Fehlermeldungen bzw. es klappt nicht:

A1:ABCDE
A2:=LINKS(INDIREKT(„Z“&C2;0);LÄNGE(A$1)-B2-1)&RECHTS(INDIREKT(„Z“&C2;0);B2)&LINKS(RECHTS(INDIREKT(„Z“&C2;0);B2+1);1)
B2:{=9-VERGLEICH(0;REST(ZEILE()-1;FAKULTÄT(9-SPALTE($A:$H)));-1)}
C2:=-FAKULTÄT(B2)+ZEILE()
D2:=-FAKULTÄT(C2)+ZEILE()
C2:=-FAKULTÄT(D2)+ZEILE()

Welcher Excel-Experte hat mir einen Tip?
Vielen dank schon mal und Gruß

Was sollen ABCDE darstellen? Die anzuordnenden Elemente? Wenn ja, möchtest Du dann, daß Excel Dir alle Permutationen angibt, also z.B. ABCDE, ABCED, ABDCE, ABDEC, ABECD, ABEDC usw. Oder willst Du nur die Anzahl der Permutationen wissen? Letzteres wäre einfach: =FAKULTÄT(n), wobei n die Anzahl der Elemente ist. Bei 5 Elementen sind es 120 Permutationen.

Beste Grüße

Oliver

Hallo felix_92,
nachdem Du das Thema unter Mathematik gestellt hast, hier ein Lösung in Perl, da mir an diesem Rechner kein Excel zur Verfügung steht.
Da @aiwendil das mit der Fakultät bereits aufgeźeigt hat, hier die Auflistung aller nicht doppelten Möglichkeiten.
Das Skript ist ein Teil eines Programmes, das zur Unterstützung eines Datenbankprogrammes gebraucht wurde. Daher ist es nicht ganz auf Deinen Bedarf optimiert, aber zumindest einigermaßen dokumentiert hoffe/meine ich.
Um die Prozedur zu starten, musst Du Perl installiert haben ( = Pflicht auf jedem Rechner ;)). Den Quelltext kannst Du via cut&pase in einen Editor laden und dann als z.B. permute.pl in Dein Programmverzeichnis speichern.
Du startest die Prozedur mit perl /pfad/zur/Quelldatei/permute.pl im Terminal bzw. der Eingabeaufforderung.
Ich hoffe es hilft Dir ein wenig weiter.
Gruß und schönes Restwochenende,
charly60

use strict;
use warnings;
use v5.14;

##################
# Variablen deklarieren
my $txt;
my $erg;
my $i = 0;
my $j = 0;

########################

Berechnung aller Möglichkeiten

$txt .= join("", @$_) for permute( [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘], [‚A‘,‚B‘,‚C‘,‚D‘,‚E‘] );

 while( $i < 15620){
 my $v = substr($txt, $i, 1);
 my $w = substr($txt, $i+1, 1);
 my $x = substr($txt, $i+2, 1); 
 my $y = substr($txt, $i+3, 1); 
 my $z = substr($txt, $i+4, 1);
###################
# 'Doppelte' herausfiltern
if($v eq $w or $v eq $x or $v eq $y or $v eq $z or   $w eq $x or $w eq $y or $w eq $z or   $x eq $y or $x eq $z or   $y eq $z ){
	 $i += 5;
	 next;
 } else {
	$erg .= substr($txt, $i, 5) . "\n";
}	
 $i += 5;
}

#################

Ergebnisse ausgeben

print $erg;
say "Anzahl aller Möglichkeiten bei 5 Stellen = " . length( $txt )/5;
say "Anzahl aller Möglichkeiten bei 5 Stellen ohne ‚Doppelte‘ = " . length( $erg )/6;

EOP

###############

Unterprogramme

sub permute {
my $last = pop @;
unless(@
) {
return map([$], @$last);
}
return map {
my $left = $
;
map([@$left, $], @$last)
}
permute(@
);
}

Ich nochmal,
das mit der Eingabe des Quellcodes ins Forum ist etwas gewöhnungsbedürftig, aber ich hoffe es klappt trotzdem mit dem Rauskopieren desTextes.
Viel Erfolg,
charly60.