function Suche_String (Makro)

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

function Suche_String (Makro)

Beitrag von mecki_45 »

Hallo zusammen,

wie erstelle ich eine "funstion", die mir als Boolschen Wert ein "TRUE" übergibt, wenn ein bestimmter Wert im Sheet enthalten ist.

D.h. die "function" soll eine Spalte (z.B.: 2) String durchsuchen, bis zum ersten mal der gesuchte Wert auftritt. Ist der Wert gefunden, soll die "function" beendet werden und ein "TRUE" zurückgeben, wird der Wert nicht gefunden, wird "FALSE" zurückgegeben.

Wie realisiere ich das?

Grüßle
Alex
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich habe eine ganze Zeit probiert und ich bin nicht sicher ob das Folgende die eleganteste Möglichkeit ist, aber es funktioniert zunächst mal.

Das hier liefert Wahr/Falsch (boolsche Werte):
=NICHT(ISTFEHLER(VERWEIS("dein_text";B1:B100)))

Das hier liefert 1/0 als boolsche Werte:
=N(NICHT(ISTFEHLER(VERWEIS("dein_text";B1:B100))))

Das hier liefert True/False als Strings:
=WENN(N(NICHT(ISTFEHLER(VERWEIS("dein_text";B1:B100))))=1;"TRUE";"FALSE")

Das Ergebnis aller 3 Formeln ist immer wahr wenn der gesuchte String mindestens einmal in der Spalte vorhanden ist.

Ich weiß nicht ob diese Art des Vorgehens für Deine Zwecke explizit nötig ist:
D.h. die "function" soll eine Spalte (z.B.: 2) String durchsuchen, bis zum ersten mal der gesuchte Wert auftritt.
denn die 3 Formeln prüfen alle Zellen (B1 bis B100) komplett durch, ohne Rücksicht ob der String schon z.B. in Zelle B2 gefunden wird. Sollte es Dir darauf ankommen nur solange zu suchen bis der String erstmalig gefunden wird müßtest Du wohl eine benutzerdefinierte Funktion dafür selber schreiben.


Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

In Basic ist das doch viel einfacher als als Formel in einer Zelle. Was bedeutet denn Suchen - doch nur einen Vergleich des vorhandenen Wertes mit dem gesuchten Wert (klar gibt es auch einen Code für Suchen ist doch aber garnicht nötig). Verwebnde z.B.:

Code: Alles auswählen

Sub Main
a = zellwert()
msgbox a
End Sub

function zellwert()
wert = thisComponent.Sheets(1)
'erhöhe den Endwert bei Bedarf
for i = 0 to 100
'gesucht wird in Spalte B
if wert.getCellByPosition(1,i).string = "mein_string" Then
	zellwert = "True"
	exit function
end if
Next i
zellwert = "False"
end function
Das ist schon alles.
der jetzt mal probiert, ob der Makrorecorder ein Ergebnis mit Deinen Formeln bringt
???

Gruß
Stephan
Antworten