Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1288to1292
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige