Forum des Access-Tutorials

Formel nur in sichtbare Zeilen übertragen (VBA)

Sascha, Montag, 20. März 2017, 14:08 (vor 71 Tagen)

Hallo VBA-Experten,

meine eigenen Kenntnisse sind leider eher begrenzt und ich habe folgendes Problem:

Ich habe eine sehr lange Liste die ich per Autofilter filtere.
Anschließend führe ich in einer Spalte neben der Liste einen Sverweis durch.
Das Problem ist das der Sverweis nicht (wie gewünscht) nur in die noch sichtbaren Zeilen eingetragen wird, sondern in die komplette Liste wodurch das Programm extrem lange zur Durchführung braucht.
Der gefilterte Bereich ist zu dem Variabel.

Hier ein Auschnitt aus meinem jetztige Code:

UsedRange = WB_Analyse_Tool.Worksheets("ZCOHF_Basis").Range("AJ100000").End(xlUp).Row 'Ich denke hier muss ich UsedRange anders definieren?!

For i = 2 To UsedRange
 
WB_Analyse_Tool.Worksheets("ZCOHF_Basis").Cells(i, "AL").Value = Application.VLookup(WB_Analyse_Tool.Worksheets("ZCOHF_Basis").Cells(i, "N").Value, WB_Analyse_Tool.Worksheets("Hilfsdaten").Range("A:D"), 2, False)
 
Next


Ich hoffe Ihr könnt mir helfen :)
Vielen Dank schonmal!

Beste Grüße,
Alexander

Formel nur in sichtbare Zeilen übertragen

Martin Asal, Dienstag, 21. März 2017, 08:50 (vor 70 Tagen) @ Sascha

Hallo Alexander,

wer aus der Datenbankwelt kommt, stellt sich bei deiner Beschreibung natürlich die Frage, ob für deine Zwecke Excel überhaupt noch geeignet ist. Das ist für mich nämlich ein typisches Beispiel, das nach einer Anwendung wie z.B. Access schreit. Aber nun zum Thema:

Dim Zelle As Range
 
Set Zelle = ActiveSheet.Range("A2")
 
Do While Zelle
    If Not Zelle.Rows.Hidden Then
        ' ... mach hier, was du willst
    End If
    Set Zelle = Zelle.Offset(1)
Loop

Martin

Formel nur in sichtbare Zeilen übertragen

Sascha, Donnerstag, 23. März 2017, 08:27 (vor 68 Tagen) @ Martin Asal

Hi Martin,

danke für deine Hilfe!

Leider wird ein Fehler erzeugt.
"Laufzeitfehler 13 - Typen unverträglich"

und zwar in folgender Zeile

Do While Zelle


Sorry aber meine Fähigkeit sind mehr als begrenzt :( gerade in der Fehlerbereinigung...


Beste Grüße
Sascha

Formel nur in sichtbare Zeilen übertragen

Martin Asal, Donnerstag, 23. März 2017, 11:20 (vor 68 Tagen) @ Sascha

Ersetze die Zeile mal durch

Do Until IsEmpty(Zelle)


Wenn Du es aufwendiger willst:

On Error Goto WEITER
Do Until IsEmpty(Zelle)
    '...
Loop
WEITER:

Das eigentlich Wichtige an meinem Post war ja, dass du mit Zelle.Rows.Hidden abfagen kannst, ob eine Zeile sichtbar ist.

Martin

Formel nur in sichtbare Zeilen übertragen

Sascha, Donnerstag, 23. März 2017, 17:03 (vor 68 Tagen) @ Martin Asal

Vielen Dank!

Es ist mir schon fast peinlich...aber ich krieg´s nicht auf die Reihe

  Dim Zelle As Range
            Set Zelle = WB_Analyse_Tool.Worksheets("ZCOHF_Basis").Range("AJ2")
 
            Do Until IsEmpty(Zelle)
                 If Not Zelle.Rows.Hidden Then
WB_Analyse_Tool.Worksheets("ZCOHF_Basis").Cells(i, "AM").Value = Application.VLookup(WB_Analyse_Tool.Worksheets("ZCOHF_Basis").Cells(i, "N").Value, WB_Analyse_Tool.Worksheets("Hilfsdaten").Range("A:D"), 4, False)

Jetzt wird gar kein Sverweis ausgeführt :(

Martin du bist echt meine letzte Hoffnung!

Gruß,
Sascha

Formel nur in sichtbare Zeilen übertragen

Martin Asal, Donnerstag, 23. März 2017, 21:41 (vor 68 Tagen) @ Sascha

Da dir For offenbar mehr liegt als Do, hier einmal der komplette Code (ungetestet, so aus dem Bauch raus mit Copy&Paste)

 
With WB_Analyse_Tool.Worksheets("ZCOHF_Basis")
    UsedRange = .Range("AJ100000").End(xlUp).Row
 
    For i = 2 To UsedRange
        If Not .Cells(i, "A").Rows.Hidden Then 
            .Cells(i, "AL").Value = Application.VLookup(.Cells(i, "N").Value, WB_Analyse_Tool.Worksheets("Hilfsdaten").Range("A:D"), 2, False)
        End If
    Next
End With
 

Martin

Formel nur in sichtbare Zeilen übertragen

Sascha, Montag, 27. März 2017, 11:05 (vor 64 Tagen) @ Martin Asal

Vielen vielen Dank!
Es läuft jetzt :)

RSS-Feed dieser Diskussion
RSS Einträge  RSS Threads   Kontakt
powered by my little forum