Microsoft Excel

Herbers Excel/VBA-Archiv

Excel Werte in array übergeben


Betrifft: Excel Werte in array übergeben von: Richard
Geschrieben am: 22.10.2017 21:47:32

Hallo,

ich habe einen Code geschrieben mit dem man bestimmte Wörter welche in einer Spalte stehen löschen kann. Das ganze klappt auch recht gut, doch die Berechnungszeit ist sehr lange. Der zu durchsuchende Text steht in Spalte E, das wonach gesucht werden soll steht in Spalte F, wenn ein Wort oder eine Zahl in beiden Spalten vorkommt dann soll es aus Spalte E gelöscht werden.

Sub Zellen_mit_Inhalt_loeschen()
Dim c As Range
    For Each c In Intersect(ActiveSheet.UsedRange.Cells, Columns(6))
        If InStr(LCase(c.Value), "gs") <> 0 Then
            Range(c, c.Offset(0, 5)).ClearContents
        End If
    Next c
End Sub
Meine Werte nach denen gesucht wird stehen in einer bestimmten Spalte, und es sind sehr viele. Kann man das evtl noch anders machen? Der Code oben ist nicht die optimale Lösung. Kann man die Wörter die in Spalte E stehen nicht einfach in ein Array übergeben? Das müsste doch schneller gehen.

Würde mich über ein paar Tipps freuen.
Gruß

  

Betrifft: AW: Excel Werte in array übergeben von: Richard
Geschrieben am: 22.10.2017 21:48:59

Hier ein Beispiel

https://www.herber.de/bbs/user/117158.xlsm


  

Betrifft: AW: Excel Werte in array übergeben von: ChrisL
Geschrieben am: 23.10.2017 09:47:49

Hi Richard

Vielleicht so...

Sub t()
Dim lngLetzte As Long, i As Long
Dim arrQuelle As Variant, arrLoeschen As Variant

With ActiveSheet
    lngLetzte = .Cells(Rows.Count, 6).End(xlUp).Row
    arrQuelle = Application.Transpose(.Range("E2:E" & lngLetzte))
    arrLoeschen = Application.Transpose(.Range("F2:F" & lngLetzte))
    ReDim arrZiel(1 To lngLetzte + 1)
    For i = LBound(arrQuelle) To UBound(arrQuelle)
        If InStr(1, LCase(arrQuelle(i)), LCase(arrLoeschen(i))) > 0 Then
            arrZiel(i) = WorksheetFunction.Trim(Replace(arrQuelle(i), Mid(arrQuelle(i), _
            WorksheetFunction.Search(arrLoeschen(i), arrQuelle(i)), Len(arrLoeschen(i))), ""))
        Else
            arrZiel(i) = arrQuelle(i)
        End If
    Next i
    .Range("G2:G" & lngLetzte) = Application.Transpose(arrZiel)
End With
End Sub

cu
Chris


  

Betrifft: AW: Excel Werte in array übergeben von: Matthias
Geschrieben am: 24.10.2017 08:11:55

Danke! Ich versuchs mal, aber sieht gut aus.


Beiträge aus den Excel-Beispielen zum Thema "Excel Werte in array übergeben"