Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel 2013 VBA: FindReplace
#11
OK, habe die Hinweise verstanden und verspreche Besserung...sorry!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#12
Hi Ralf,

hättest Du mir ein Beispiel bzgl. einer Verweistabelle und wie man darauf zugreift?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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
Antworten Top
#14
(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!


.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
Antworten 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!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#16
Hi Uwe,

(07.12.2015, 23:07)Kuwer schrieb: Na ja, wie Du meinst!

der Unterschied ist schon 'ne Hausnummer.
Super!
Antworten 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)
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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