2016-08-08 22 views

Antwort

0
Dim a as Range, listValues() as string 'array of string 
Dim str as string, i as integer 


str = "Red;Blue;Green" 
listValues = Split(str,";") 'split str using ";" 
for i= Lbound(listValues) to Ubound(listValues) 'loop thru the array 
    Set a = ActiveSheet.UsedRange.Find(what:=listValues(i), lookat:=xlWhole) 
    if Not a Is Nothing Then 
     'value found 
     a.value = Range("A1").value 
    end if 
next i 

Ich habe @Davesexcel ‚s Auflösung angepasst, überprüfen seine ein: How to avoid using select in VBA for variable cell ranges?

Diese Auflösung von RonDeBruin schön ist auch:

http://www.rondebruin.nl/win/s9/win006.htm

0

Setzen Sie Ihre Werte einige, wo in eine Spalte:

enter image description here

Dann wird eine einfache Formel in C1:

=IF(ISNUMBER(MATCH(B1,E:E,0)),$A$1,"") 

Wenn eine Übereinstimmung gefunden wird, wird es seine Zeilennummer zurück. Das If testet, ob es sich um eine Nummer oder einen Fehler handelt. Wenn es sich um eine Zahl handelt, wird eine Übereinstimmung gefunden und der Wert in A1 zurückgegeben. Andernfalls wird eine leere Zeichenfolge zurückgegeben.

enter image description here

+0

Vielen Dank! –

+0

Ich habe es an einer einzigen Zelle arbeiten lassen, aber ich muss es auf einer Reihe verifizieren lassen. Wenn ich die folgende Formel verwende, zeigt es den Wert von A9 nicht an, obwohl der Logiktest wahr zurückgibt. Irgendwelche Vorschläge? = IF (ISNUMBER (MATCH (F9: U9, W43: W50,0)), $ A $ 9, "") –

+0

Sie müssen diese Formel mit Strg-Shift-Enter anstelle von Enter eingeben, wenn Sie den Bearbeitungsmodus verlassen. Wenn es richtig gemacht wird, wird Excel '{}' um die Formel legen. @ B.Witt –