Ich versuche, eine Liste von Werten in mehreren Arbeitsblättern einer Arbeitsmappe nachzuschlagen und sowohl die Spaltenüberschrift als auch die Zeilenüberschrift in den Zellen neben meinem Suchwert zurückzugeben. Ich habe einen Code gefunden, der für alle Werte in meiner ersten Datenspalte (ColB) im aktiven Arbeitsblatt perfekt funktioniert. Wenn ich meiner Liste Werte hinzufüge, die sich in einer anderen Spalte oder einem anderen Arbeitsblatt befinden, erhalte ich einen Zirkelverweisfehler und es wird eine 0 in meine Funktionszellen eingefügt. Ich habe meine Liste der nachzuschlagenden Werte in Spalte 1 unter meiner letzten Datenzeile eingefügt und beide Funktionen in die Spalten daneben.
Kann mir jemand helfen, dieses Problem zu beheben?
Meine Arbeitsmappe besteht aus einer wachsenden Anzahl von Arbeitsblättern im gleichen Format. Jedes Arbeitsblatt hat Spaltenüberschriften in Zeile 1 und Zeilenüberschriften in Spalte 1, 81 Zeilen und 40 Spalten, die mit Daten gefüllt sind. Die Liste der nachzuschlagenden Werte kann bis zu 1000 oder mehr umfassen.
Function MyROW(MyVAL)
With ActiveSheet.UsedRange
FFIND = False
For J = .Column + 1 To .Column + .Columns.Count
For I = .Row + 1 To .Row + .Rows.Count
If (Cells(I, J) = MyVAL) Then
FFIND = True
GoTo MyEND
End If
Next I
Next J
MyEND:
If (FFIND) Then MyROW = Cells(I, .Column)
End With
Endfunktion
Function MyCOLUMN(MyVAL)
With ActiveSheet.UsedRange
FFIND = False
For J = .Column + 1 To .Column + .Columns.Count
For I = .Row + 1 To .Row + .Rows.Count
If (Cells(I, J) = MyVAL) Then
FFIND = True
GoTo MyEND
End If
Next I
Next J
MyEND:
If (FFIND) Then MyCOLUMN = Cells(.Row, J)
End With
Endfunktion
In Zelle B84 habe ich diese Funktion eingefügt: =MyCOLUMN(A84) und sie nach unten in die Zellen darunter gezogen. In Zelle C84 habe ich dasselbe mit der Funktion gemacht: =MyROW(A84). Die Funktionen funktionieren beide gut, wenn ich in A84 einen Wert eingebe, der in A2-A82 zu finden ist, aber nicht, wenn ich in a84 einen Wert eingebe, der in B2-AO82 zu finden ist.