Clever-Excel-Forum

Normale Version: Befehl an Tabellenlänge automatisch anpassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich habe folgendes Problem. Ich habe folgenden Befehl für eine Exceldatei:

Code:
=WENNFEHLER(INDEX(F1:F12;VERGLEICH(A1:A12&B1#;D1:D12&E1:E12;0));"Kein Match")


Ziel des Befehls ist es, automatisch die Name und "Non-Matches" zu ermitteln. Nun will ich dazu ein Makro erstellen, welches automatisch auf eine "neue" Datei, mit anderen Werten und einer anderen Zeilenanzahl, den selben Befehl anwendet und mir die Namen und "Non-Matches" ausspuckt. Wenn ich nun ein Makro aufzeichne, unten eine neue Tabelle erstelle und den Befehl dann eingebe, das Makro speichere und dann auf einen "neuen" Datensatz anwende, dann steht immer folgende Fehlermeldung:

Laufzeitfehler 9: Index außerhalb des gültigen Bereiches

Ich denke mal das liegt daran, dass die neue Tabelle länger ist und die in der Formel angegeben Zeilen nicht mit denen der neuen Datei matchen. Wie bekomme ich des also hin, dass das Makro automatisch die Länge der Tabelle erkennt und sich dann automatisch anpasst? Und wie fixe ich den Fehler?
Hi,

Zitat:Und wie fixe ich den Fehler?

Indem Du uns mal Deinen Code UND Deine Mappe zeigst.
Code:
Sub Makro3()
'
' Makro3 Makro
'

'
    Sheets("Tabelle3").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets.Add After:=ActiveSheet
    ActiveCell.FormulaR1C1 = "Match"
    Range("A1").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A2").Select
    ActiveCell.Formula2R1C1 = _
        "=IFERROR(INDEX([Tabelle1.xlsx]Tabelle1!R2C92:R313C92,MATCH(Tabelle1!RC[5]:R[215]C[5]&Tabelle1!RC[4]:R[215]C[4],[Tabelle1.xlsx]Tabelle1!R2C101:R313C101&VLOOKUP([Daten_Auslieferungen.xlsx]Tabelle1!R2C91:R313C91,'C:\Users\EALO\Documents\[Tabelle2.xlsx]Tabelle1'!R2C1:R11435C2,2,FALSE),0)),""Keine Übereinstimmung"")"
    Range("A3").Select
End Sub
Hi,


Zitat:UND Deine Mappe
hallo
ich denke dazu brauchst du kein Makro wenn du statt dessen eine "intelligente" Tabelle erstellst:

Klicke in die Liste, Tastenkombination [STRG]+[T] > Tabelle hat Überschriften.

Der konkrete Bezug richtet sich jetzt nach der Überschrift und wird automatisch angepasst wenn Zeilen hinzu kommen.
Aus  F1:F12, wird dann Tabelle1[Überschrift]

Gruß Holger
Damit hats geklappt danke. Habe nun ein Makro mit einer intelligenten Tabelle aufgenommen und nun klappt es. Ein kleines "Schöhneheitsproblem" besteht aber noch. Wenn ich nun im "Ausgangsdokument" ein Makro aufnehme und dabei eine intelligente Tabelle von bsp. A1:A100 mache und dann als nächstes meinen Befehl darauf anwende dann klappt dass wunderbar. Wenn ich dieses Makro nun aber auf ein Dokument mit bsp. A1:A97 anwenden, dann erstellt das Makro ja trotzdem eine intelligente Tabelle von A1:A100 obwohl es nur bis 97 geht. Dadurch wird dann auch der Befehl auf die ganze Tabelle (A1:A100) angewandt und nicht auf (A1:A97), weshalb es dann sozusagen dreimal ein "Mismatch" anzeigt, obwohl gar nichts verglichen wird. Wie kann man das noch anpassen?
Hi,

für mein Verständnis ist die Formel schon falsch:

Code:
=WENNFEHLER(INDEX(F1:F12;VERGLEICH(A1&B1;D1:D12&E1:E12;0));"Kein Match")

Außerdem müssten die Bezüge fixiert werden!
Auch im Makro ist der Vergleich falsch!