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

Forumthread: Funktion mit 4 Parametern

Funktion mit 4 Parametern
03.12.2012 13:52:13
Alifa
Hallo,
suche eine Funktion,die eine 7-stellige Zahl, bestehend aus den Ziffern 1 und 2, auf folgendes prüft:Die Anzahl der 1-sen, Anzahl der 2-en, Anzahl der zusammenhängenden 1-sen. Die Funktion EinserGruppen mit den Parametern s(die Zahl, als String), z1=4(Anzahl der 1-sen), z2=3(Anzahl der 2-en) z3=2(Anzahl der 1-ser Gruppen)ist WAHR für folgendes s:
1112212,1121122,1211122,1122211,1112122,1112221,2212111,2112112,2111221,2111212.
Danke im Voraus,
Alifa

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
UDF BeispielGruppe(1er und 2er)
03.12.2012 14:20:39
NoNet
Hallo Alifa,
verwende z.B. diese Funktion :
Public Function EinserGruppen(s As String, z1 As Byte, z2 As Byte, z3 As Byte) As Boolean 'Hallo, 'suche eine Funktion,die eine 7-stellige Zahl, bestehend aus den Ziffern 1 und 2, auf _ folgendes prüft: 'Die Anzahl der 1-sen, Anzahl der 2-en, Anzahl der zusammenhängenden 1-sen. 'Die Funktion EinserGruppen mit den Parametern s(die Zahl, als String), z1=4(Anzahl der 1- _ sen), 'z2=3(Anzahl der 2-en) z3=2(Anzahl der 1-ser Gruppen)ist WAHR für folgendes s: '1112212,1121122,1211122,1122211,1112122,1112221,2212111,2112112,2111221,2111212. '03.12.2012, NoNet - www.excelei.de Dim Einser As Byte, Zweier As Byte, Gruppen As Byte, intI As Integer, bolTemp As Boolean bolTemp = Len(s) - Len(Replace(s, "1", "")) = z1 If bolTemp Then bolTemp = Len(s) - Len(Replace(s, "2", "")) = z2 If bolTemp Then For intI = 1 To Len(s) If Mid(s, intI, 1) = "1" Then If Einser = 0 Then Einser = 1 Else If Mid(s, intI - 1, 1) "1" Then Einser = Einser + 1 End If End If End If Next bolTemp = Einser = z3 End If End If EinserGruppen = bolTemp End Function Hier Deine Beispielwerte :
AB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Funktionen im Tabellenblatt
Zelle Formel 
B6   =einsergruppen(A6;$B$1;$B$2;$B$3) 
B7   =einsergruppen(A7;$B$1;$B$2;$B$3) 
B8   =einsergruppen(A8;$B$1;$B$2;$B$3) 
B9   =einsergruppen(A9;$B$1;$B$2;$B$3) 
B10   =einsergruppen(A10;$B$1;$B$2;$B$3) 
B11   =einsergruppen(A11;$B$1;$B$2;$B$3) 
B12   =einsergruppen(A12;$B$1;$B$2;$B$3) 
B13   =einsergruppen(A13;$B$1;$B$2;$B$3) 
B14   =einsergruppen(A14;$B$1;$B$2;$B$3) 
B15   =einsergruppen(A15;$B$1;$B$2;$B$3) 

Gruß, NoNet

Anzeige
AW: UDF BeispielGruppe(1er und 2er)
03.12.2012 20:45:03
Alifa
Hallo NoNet,
die Funktion passt. Wenn Du noch ein wenig Geduld aufbringst, bitte erkläre sie. Falls nicht, trotzdem vielen Dank!!
Grüße Alifa

Kommentierte UDF EinserGruppen(1er und 2er)
04.12.2012 10:36:02
NoNet
Hallo Alifa,
ich habe die UDF etwas ausführlicher kommentiert, vielleicht wird die Funktionsweise damit klarer :
Public Function EinserGruppen(s As String, z1 As Byte, z2 As Byte, z3 As Byte) As Boolean
'03.12.2012, NoNet - www.excelei.de
Dim Einser As Byte, Zweier As Byte, Gruppen As Byte, intI As Integer, bolTemp As Boolean
'Hier wird geprüft, ob die Anzahl der 1en stimmt :
'wenn man von der Länge des Gesamt-Strings die Länge des Strings ohne die 1en abzieht,
'muss genau z1 resultieren, also die gewünschte Anzahl der 1en
'Beispiel : "1122212" = Länge 7, ohne die 1en ("2222") = Länge 4 => Differenz 3
bolTemp = Len(s) - Len(Replace(s, "1", "")) = z1
'Falls die Anzahl der 1en korrekt (=z1) ist, hier weitermachen :
If bolTemp Then
'Hier wird geprüft, ob die Anzahl der 2en stimmt :
'wenn man von der Länge des Gesamt-Strings die Länge des Strings ohne die 2en abzieht,
'muss genau z2 resultieren, also die gewünschte Anzahl der 2en
'Beispiel : "1122212" = Länge 7, ohne die 2en ("111") = Länge 3 => Differenz 3
bolTemp = Len(s) - Len(Replace(s, "2", "")) = z2
'Falls die Anzahl der 2en korrekt (=z2) ist, hier weitermachen :
If bolTemp Then
'Hier wird in einer Schleife (Zeichen für Zeichen) geprüft,
'ob eine neue 1er-Gruppe beginnt
'das ist dann der Fall, wenn es das erste Zeichen ="1" ist oder wenn
'das vorhergehende Zeichen KEINE "1" war, aber das aktuelle Zeichen
For intI = 1 To Len(s)
If Mid(s, intI, 1) = "1" Then
If Einser = 0 Then
Einser = 1
Else
If Mid(s, intI - 1, 1)  "1" Then
Einser = Einser + 1
End If
End If
End If
Next
'wenn die Anzahl der Einsergruppen = z3 ist, ist bolTemp=TRUE, ansomnsten FALSE
bolTemp = Einser = z3
End If
End If
'Das Ergebnis der Funktion EinserGruppen() entspricht bolTemp (TRUE oder FALSE)
EinserGruppen = bolTemp
End Function
Gruß, NoNet

Anzeige
AW: Funktion mit 3 Parametern
03.12.2012 15:07:29
Christian
Hallo Alifa,
Quelle excelformeln.de
 AB
11112212WAHR
21121122WAHR
31211122WAHR
41122211WAHR
51112122WAHR
61112221WAHR
72212111WAHR
82112112WAHR
92111221WAHR
102111212WAHR

Formeln der Tabelle
ZelleFormel
B1{=UND(SUMME((TEIL(A1;SPALTE(1:1); 1)="1")*1)=4;SUMME((TEIL(A1;SPALTE(1:1); 1)="2")*1)=3;ANZAHL(FINDEN(WIEDERHOLEN("1";SPALTE(1:1)); A1))<4)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
MfG Christian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige