Excel 2007 - Formeln programmieren - Wer kann helfen?

...komplette Frage anzeigen

2 Antworten

In die Formel einzugebende Argumente brauchst Du nicht extra zu dimensionieren, sondern schreibst das so
Function FindenversetztHolen(WORT As String, Sel As Range)
Dim c, Hole
Hole = 0
For Each c In Sel
If c.Value = WORT Then Hole = c.Offset(1, 3).Value 'einzeilige if-then-Variante reicht hier
Next c
FindenversetztHolen = Hole
End Function

Da sich Deine Beschreibung und die angegebene Formel nicht ganz decken, habe ich die Index-Formel nachgestellt, das Prinzip sollte deutlich werden: Ablauf wie jedes Makro, am Schluss dem Formelnamen das Ergebnis zuweisen.
Die Formel unterscheidet zwischen Groß- und Kleinschreibung (wenn Du das nicht willst, musst Du ganz oben neben Option Explicit noch Option Compare Text reinschreiben) und der Text muss in Anführungszeichen in die Formel eingegeben werden, dann tut sie bei mir.
Vergleich ohne Berücksichtigung Gross-Klein kannst Du auch im Makro mit Lcase oder Ucase vornehmen:
If Lcase(c.Value) = Lcase(WORT) Then Hole = c.Offset(1, 3).Value

Jedenfalls wird das Hole erst mit Null gefüllt und erst, wenn WORT gefunden wird, mit dem versetzten String gefüllt, der dann im Formelergebnis auftaucht.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Iamiam
17.10.2011, 23:35

vielleicht noch der Hinweis: Eine UDF (User Defined Function) wird in der Formellliste bei "alle" Formeln angezeigt, wie jede integrierte Formel auch.
In der Sub-Liste kannst Du sie nicht sehen!

0

Deine Fragestellung ist nicht zu verstehen: Willst du immer ein ganzes Blat (255 Spalten mal 65535 Zeilen = 16.711.425 Zellen durchsuchen?

Ansonsten kann mal ja alles mit Input-Boxen abfragen und dann die erhaltene Variable in die Formel einsetzen. Statt "Auto01" steht dann z.B. MySuchBegriff

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Dohalta
13.10.2011, 20:09

=INDEX('Daten1'!$A:$V;VERGLEICH("Auto01";' Daten1'!$A$1:$A$15000;0)+1;3)


16.711.425 Zellen würde ich Excel nicht antun. Ich durchsuche doch mit der Formel lediglich A bis V und nach unten 1 bis 15000. Insofern gehts das flott. Mein Problem ist, ich hab noch keine Formel geschrieben.

0

Was möchtest Du wissen?