Clever-Excel-Forum

Normale Version: Excel 2013 VBA: FindReplace
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
OK, habe die Hinweise verstanden und verspreche Besserung...sorry!
Hi Ralf,

hättest Du mir ein Beispiel bzgl. einer Verweistabelle und wie man darauf zugreift?
Hallo Erich!
Das Makro befindet sich in Tabelle1 ("Test"), da über einen CommandButton gestartet wird.
Microsoft Excel Objekt Tabelle1
Option Explicit 

Private Sub CommandButton1_Click()
Dim Zelle As Range
For Each Zelle In Tabelle1.Columns("D").SpecialCells(xlCellTypeConstants)
  With Tabelle2  'Verweistabelle
     Zelle.Offset(0, 2) = _
        WorksheetFunction.Index(.Columns("B"), WorksheetFunction.Match(Zelle, .Columns("A")))
  End With
Next
End Sub

Siehe Datei!

DEF
1PoPofrcywebh
2AtAtvdxuzdtw
3LzLzykeijkte
4KkKktjnxktum
5XhXhoaicbjzu
6AaAahamraced
7JuJurjsugdob
8AtAtvdxuzdtw
9SwSwfabqsgca
10YzYzcavazgds

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Gruß Ralf
(07.12.2015, 17:49)RPP63 schrieb: [ -> ]Dann brauchst Du auch nicht erst eine Formel in die Zelle schreiben und sie danach durch ihren Wert ersetzen

Na ja, wie Du meinst!

[attachment=3498]

Gruß Uwe
Hallo Ihr Beiden,

ich kann nur sagen...bin begeistert was Ihr da so herzaubert...vielen Dank!!
Und man lernt auch gleich noch etwas dabei!

Danke!
Hi Uwe,

(07.12.2015, 23:07)Kuwer schrieb: [ -> ]Na ja, wie Du meinst!

der Unterschied ist schon 'ne Hausnummer.
Super!
Moin Uwe!

Klar, dass einzelne Zellzugriffe so ziemlich das langsamste sind, was man einem Makro antun darf.
Mir ging es nur um die Alternative des Hartcodierens der Verweise.

Am Rande:
Ich hab dann versucht, das Ganze mittels Berechnung im Array nochmal zu beschleunigen.
Ist tatsächlich ca. 25% langsamer als Deine Variante (2,5 statt 2 Sek).
Kann es sein, dass die Tabellenfunktionen im Sheet schneller laufen???
Code:
Private Sub CommandButton1_Click()  'RPP63
Dim Shortcut, Verweis As Range
Dim dblDauer As Double, cnt As Long
dblDauer = Timer
Columns(6).ClearContents
Shortcut = Range(Cells(1, 4), Cells(1, 4).End(xlDown)).Value
Set Verweis = Tabelle2.Range("A1:B10")
With WorksheetFunction
   For cnt = 1 To UBound(Shortcut)
      Shortcut(cnt, 1) = .Lookup(Shortcut(cnt, 1), Verweis)
   Next
   Range(Cells(1, 4), Cells(1, 4).End(xlDown)).Offset(0, 2) = .Transpose(.Transpose(Shortcut))
End With
dblDauer = Timer - dblDauer
MsgBox dblDauer
End Sub

Gruß Ralf
Hallo Ralf,

mit einer kleinen Anpassung in Deinem Code kann man noch einmal 0,5 sec einsparen.


Statt:
Code:
Range(Cells(1, 4), Cells(1, 4).End(xlDown)).Offset(0, 2) = .Transpose(.Transpose(Shortcut))


so:


Code:
Range(Cells(1, 4), Cells(1, 4).End(xlDown)).Offset(0, 2) = Shortcut


Das doppelte Transponieren kann entfallen, da die Daten wie eingelesen auch reingeschrieben werden können.
Hallo Attila!
Danke für die Info!  Blush

Gruß Ralf
Seiten: 1 2