3.2k Aufrufe
Gefragt in Tabellenkalkulation von fedjo Experte (2.2k Punkte)
Hallo Exelfreunde,
hab da mal eine Frage:
Wie kann ich eine ActiveCell mit einem Spaltenbereich (X) vergleichen?

If ActiveCell.Offset(0, 2) soll mit dem Spaltenbereich (X3:X100) verglichen werden. Wird der Wert gefunden: Then ActiveCell.Offset(0, 8).Value = rechte Zelle vom Fund.
Der gesuchte Wert im Spaltenbereich (X3:X100) ist nur einmal vorhanden.

Ich hoffe es ist einigermaßen verständlich beschrieben, und Ihr könnt mir weiterhelfen.

Gruß
fedjo

11 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
If ActiveCell.Offset(0, 2) = Cells(ActiveCell.Row, 24) Then

Gruß Hajo
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
oder,
If Application.WorksheetFunction.CountIf(Range("X3:X100"), ActiveCell.Offset(0, 2)) > 0 Then

Gruß Hajo
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Hajo,
danke für die schnelle Antwot.

Wie lautet der Code für die rechte Zelle vom gefundenen Wert?
Then ActiveCell.Offset(0, 8).Value = rechte Zelle vom Fund.

Gruß
fedjo
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
keimne Ahnung was Du meinst und auf welchen Beitrag sich das bezieht.

Gruß Hajo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Fedjo,

probier's mal so

ActiveCell.Offset(0, 8).Value = Range("Y" & WorksheetFunction.Match(ActiveCell.Offset(0, 2), Range("X:X"), 0))


Gruß
Rainer
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Rainer,
ich habe es mal so getestet:

If ActiveCell.Offset(0, 2) = Cells(ActiveCell.Row, 24) Then
ActiveCell.Offset(0, 8).Value = Range("Y" & WorksheetFunction.Match(ActiveCell.Offset(0, 2), Range("X:X"), 0))
End If
End Sub

Dein Vorschlag funktioniert nur, wenn alle Werte in einer Zeile stehen.
In den Spalten ActiveCell sind etwa 6000 Einträge, in den Spalten (X, Y) etwa 100 Einträge.

Gruß
fedjo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Fedjo,

dann hast Du Dich falsch ausgedrückt oder ich habe Dich falsch verstanden oder Beides:-)

Vielleicht schilderst Du Dein Vorhaben noch mal anhand einer Beispielmappe.

Gruß
Rainer
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Rainer,
ich habe mal ein Muster erstellt, ich hoffe es ist einigermaßen verständlich.

Gruß
fedjo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Fedjo,

Dein Vorschlag funktioniert nur, wenn alle Werte in einer Zeile stehen.

,,,das war doch von Dir auch so gewollt.

Mit Deiner Angabe "ActiveCell.Offset(0,x)" verweist Du ja immer nur auf die Zeile in der sich der Cursor befindet.

Schau mal in den Anhang, dort habe ich ein anderes Makro eingefügt, welche Du mit dem Button starten kannst.
Damit wird der gesamte Beireich E3:E6000 überprüft und die entsprechenden Werte in Spalte K eingefügt.

Download

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Fedjo,

falls die Lösung des Problems nicht unbedingt an VBA gebunden ist, wäre eine Formellösung einfacher.

Formel in K3 einfügen und nach Bedarf nach unten ziehen.

=WENN(ZÄHLENWENN(X:X;E3);SVERWEIS(E3;X:Y;2;0);"")

Gruß
Rainer
...