Suchen Sie in verschiedenen Arbeitsblättern nach Wertelisten und geben Sie sowohl Spalten- als auch Zeilenüberschriften zurück.

Suchen Sie in verschiedenen Arbeitsblättern nach Wertelisten und geben Sie sowohl Spalten- als auch Zeilenüberschriften zurück.

Bildbeschreibung hier eingebenIch 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

Bildbeschreibung hier eingeben

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.

verwandte Informationen