Microsoft Excel

Herbers Excel/VBA-Archiv

Anzahl einer Zeichenfolge in Zelle finden

Betrifft: Anzahl einer Zeichenfolge in Zelle finden von: Mike
Geschrieben am: 08.12.2006 12:51:55

Hallo Ex(cel)perten,
Folgendes Problem -
Ich habe eine Zelle mit Inhalt(z.B.)"XOOXXOOOXOOXXOOOOOOXXOOOX".
Wie bekomme ich jetzt(mit Formel) die Anzahl der Kombination OXXO aus dieser Zelle(also Ergebnis = 3)????
Vielen Dank und sonnige Grüße aus Bayern

Mike

  


Betrifft: AW: Anzahl einer Zeichenfolge in Zelle finden von: ransi
Geschrieben am: 08.12.2006 12:57:41


Hallo Mike

Vesuch es mal so:

Tabelle1

 AB
1XOOXXOOOXOOXXOOOOOOXXOOOXOXXO
2 3

Formeln der Tabelle
ZelleFormel
B2=(LÄNGE(A1)-LÄNGE(WECHSELN(A1;B1;"")))/LÄNGE(B1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4



ransi


  


Betrifft: AW: Anzahl einer Zeichenfolge in Zelle finden von: Mike
Geschrieben am: 08.12.2006 13:30:17

Danke!
Aber wie funktioniert die formel bei dieser Zeichenfolge:
OXXOXXOOXOXXO

Nochmals VIELEN DANK


  


Betrifft: anderer Ansatz von: ransi
Geschrieben am: 08.12.2006 14:00:02

Hallo Mike

Zitat:
Aber wie funktioniert die formel bei dieser Zeichenfolge:
OXXOXXOOXOXXO


Da greifen wir dann gaaanz tief in die Trickkiste,
Teste mal:

Tabelle1

 AB
1OXXOXXOOXOXXOOXXO
2 3
3  

Formeln der Tabelle
ZelleFormel
B2=SUMMENPRODUKT((TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)-LÄNGE(B1)+1));LÄNGE(B1))=B1)*1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

ransi





ransi


  


Betrifft: AW: anderer Ansatz von: Mike
Geschrieben am: 08.12.2006 14:09:38

Ahhhhhhh . . . . .
Wunderbar! Kannst Du mir die Funktion mit 2 Sätzen erklären?
Dann kann ich sie mir beim nächsten Versuch selbst "basteln"!
VIELEN VIELEN DANK

Gruß

Mike


  


Betrifft: AW: anderer Ansatz von: ransi
Geschrieben am: 08.12.2006 14:23:43

Hallo MIke

Erklären kann ich sowas ganz schlecht.
Bin nämlich nicht so der Erklärbär.

Hilft dir dies hier zum Verständniss der Formel weiter ?

Tabelle1

 AB
1OXXOXXOXXO XX
2 3
3  
4 =SUMMENPRODUKT((TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)-LÄNGE(B1)+1));2)=B1)*1)
5 =SUMMENPRODUKT((TEIL(A1;{1;2;3;4;5;6;7;8;9;10};2)=B1)*1)
6 =SUMMENPRODUKT(({"OX";"XX";"XO";"OX";"XX";"XO";"OX";"XX";"XO";"O "}=B1)*1)
7 =SUMMENPRODUKT({FALSCH;WAHR;FALSCH;FALSCH;WAHR;FALSCH;FALSCH;WAHR;FALSCH;FALSCH}*1)
8 =SUMMENPRODUKT({0;1;0;0;1;0;0;1;0;0})
9  

Formeln der Tabelle
ZelleFormel
B2=SUMMENPRODUKT((TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)-LÄNGE(B1)+1));LÄNGE(B1))=B1)*1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4



ransi


  


Betrifft: AW: anderer Ansatz von: Mike
Geschrieben am: 08.12.2006 14:30:40

;o)
okay!

Nochmal VIELEN DANK und schönes Wochenende

Gruß

Mike


  


Betrifft: Erklärung von: Yal
Geschrieben am: 08.12.2006 15:27:37

Ich glaub' ich hab's (ich bin weiterhin beeindruckt!):

Ziel ist es (wie in meiner Prog., aber in VBA ist es eh einfach) die gesamte String in einzel String zu teilen, um Sie gegen die Referenz zu vergleichen.
Da es in Formeln keine For-Schleife gibt, wird dieser Effekt durch die Erzeugung einer Pseudo-Bereich (= Matrix) erzeugt:
INDIREKT("A1:A"&LÄNGE(A1)-LÄNGE(B1)+1)
Aus diese Matrix entnehmen wir die ZeilenNr, um die einzel Strings zu erzeugen
TEIL(A1;ZEILE( ... );Länge(B1))
jener gegen die Referenz vergliechen werden
=B1
und aus diese Ergebnis-Matrix wird eine Summe gebildet. Dabei ist das Produkt mit *1 notwendig, um keine boolsche (Wahr + Wahr = Wahr) sondern decimal Summierung (1 + 1 = 2) zu forcieren.

Ich glaube nicht, dass Microsoft in seine Werbung ("Where do you want to go today?") gedacht hat, an solche Reise zur Stellen der Excel-Galaxie, die nie ein Mensch zuvor gesehen hat!


Yal (Beam me up, ransi!)


  


Betrifft: OXXOXXO als 1 oder 2 Treffer? von: Yal
Geschrieben am: 08.12.2006 13:31:05

es ist dabei zu prüfen, ob eine Basis-Zeichenkette wie
OXXOXXOXXO
als 1 Treffer oder 3 aus OXXO zu bewerten ist. Unsere Lösungen bringen jeweils verschiedene Ergebnis.

@ransi: respect! ich wäre nicht darauf gekommen!


Yal


  


Betrifft: AW: OXXOXXO als 1 oder 2 Treffer? von: Mike
Geschrieben am: 08.12.2006 13:37:06

Genau das war meine nächste Frage.
Ich möchte also die XX ausgezählt haben!
Vielen Dank und sonnige Grüße aus Bayern!!

Mike


  


Betrifft: AW: OXXOXXO als 1 oder 2 Treffer? von: Yal
Geschrieben am: 08.12.2006 14:13:18

Da ich gesagt habe, dass es vermutlich nur mit eigener "Function" gehen soll, muss ich jetzt mich im Zeug legen! Besonders nachdem ransi sich so demonstrativ war (Hut ab!).

Diese muss in einem Modul angelegt werden, um wie eine Formel verwendet werden zu können
Public Function AnzahlTreffer(Text, Treffer) As Long
Dim i%, L%, T1$, T2$
    T1 = LCase(Text)
    T2 = LCase(Treffer)
    L = Len(Treffer)
    For i = 1 To Len(T1) - L + 1
        If Mid(T1, i, L) = T2 Then AnzahlTreffer = AnzahlTreffer + 1
    Next i
End Function



Viel Spass
Yal


  


Betrifft: AW: OXXOXXO als 1 oder 2 Treffer? von: Mike
Geschrieben am: 08.12.2006 14:32:21

Auch Dir VIELEN DANK FÜR DIE HILFE!

Schönes Wochenende und Gruß aus Bayern

Mike


  


Betrifft: AW: Anzahl einer Zeichenfolge in Zelle finden von: Yal
Geschrieben am: 08.12.2006 13:17:46

Hi,

ich habe eine lustige Lösung mit Verwendung von "WECHSELN", da diese das "n-tes" Auftreten eines Matching verwendet.
Die erste Lösung passt nicht in nur einer Zelle:

=NICHT(ISTFEHLER(FINDEN("!";WECHSELN($A$2;B$4;"!";$A6))))*$A6

Die zweite habe ich auf 3, bzw. mehr als 3 begrenzt. 'Ist schon in diese bescheidene Umfang irrsinnig:
=WENN(ISTFEHLER(FINDEN("!";WECHSELN($A$2;B$4;"!";1)));0;WENN(ISTFEHLER(FINDEN("!";WECHSELN($A$2;B$4;"!";2)));1;WENN(ISTFEHLER(FINDEN("!";WECHSELN($A$2;B$4;"!";3)));2;WENN(ISTFEHLER(FINDEN("!";WECHSELN($A$2;B$4;"!";1)));3;"mehr als 3"))))

Um das zu kürzen ist wahrscheinlich die Programmierung eine eigene Funktion notwendig.

Schwer zu verstehen? Siehe:
https://www.herber.de/bbs/user/38829.xls


Viel Erfolg
Yal


 

Beiträge aus den Excel-Beispielen zum Thema "Anzahl einer Zeichenfolge in Zelle finden"