Excel 2013 VBA: FindReplace
#11
OK, habe die Hinweise verstanden und verspreche Besserung...sorry!
Top
#12
Hi Ralf,

hättest Du mir ein Beispiel bzgl. einer Verweistabelle und wie man darauf zugreift?
Top
#13
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


Angehängte Dateien
.xlsm   Verweis.xlsm (Größe: 19,49 KB / Downloads: 3)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • sharky51
Top
#14
(07.12.2015, 18: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!


.xlsm   Verweis_Kuwer.xlsm (Größe: 445,97 KB / Downloads: 7)

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • sharky51
Top
#15
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!
Top
#16
Hi Uwe,

(08.12.2015, 00:07)Kuwer schrieb: Na ja, wie Du meinst!

der Unterschied ist schon 'ne Hausnummer.
Super!
Top
#17
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#18
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.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • RPP63
Top
#19
Hallo Attila!
Danke für die Info!  Blush

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste