VBA: Wie die Rückkehr einer Zelle Referenz von einer variable, die looksup einen Wert?
Zunächst, ich habe sehr wenig Erfahrung mit VBA. Hier ist mein problem:
Brauche ich für das update einer bestimmten Geschwindigkeit auf einer täglichen Basis, um Investitionen Berechnungen. Jetzt habe ich eine Schaltfläche, die einmal geklickt bringt der Tag-rate, die automatisch von einer website, und ich habe kopieren und fügen Sie den Zinssatz auf Ihre jeweilige Datum manuell ein. Was ich möchte, es zu tun, klicken Sie einfach auf den Knopf und die rate wäre automatisch eingefügt werden neben dem Datum. Das Arbeitsblatt sieht wie folgt aus:
Update Button
Day's date Day's rate
03/01/2013 6%
Date Rate
02/01/2013 5%
03/01/2013 6%
04/01/2013
Die naheliegendste Möglichkeit, es zu tun, wäre die Verwendung von SVERWEIS zu suchen, die dem aktuellen Datum oben rechts und fügen Sie Sie in der richtigen Stelle in der Spalte B, aber das problem wäre, dass jedes mal, wenn ich den Wert aktualisieren, werden die vorherigen Tages Formel zu Fehlern führen würde. Also die beste Lösung wäre, um ein einfaches makro, das dem Tag entspricht, ist das Datum in Spalte A und fügt nur den Wert der rate weiter zu.
Eine gute Strategie, um diese Aktion durchzuführen, mit normalen Tabellenfunktionen wäre =CELL("address";INDEX(B:B;MATCH($G$5;A:A;0);))
, die in den Zellbezug der rechten übernachtung in Spalte B. Das problem ist, es ist nicht die = - ZELL-Funktion in VBA.
Habe ich versucht, das folgende Skript aus, aber es hat nicht funktioniert:
Sub Teste2()
Dim IndexFormula As Range
MatchFormula = WorksheetFunction.Match(Range("Today"), Range("A:A"), 0)
IndexFormula = WorksheetFunction.Index(Range("B:B"), MatchFormula, 0)
Value = IndexFormula.Address
Range("G5").Select
Selection.Copy
Value.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Welchen code soll ich benutzen?
Vielen Dank im Voraus
InformationsquelleAutor user3276971 | 2014-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie sehr nahe mit Ihr versuchen, nur ein paar kleine änderungen, wie unten und es wird funktionieren, Keine Notwendigkeit, einen zu finden, da es langsamer sein wird:
Mehr so, wenn Sie wollen, es zu werden, noch schneller die Sie verwenden können:
Dies funktioniert, weil das Spiel auf die Spalte wird die Zeile mit der Ihrer Wert, und Sie können nur Verweis, dass die Zeile in Spalte B für ungültig zu erklären die Notwendigkeit der Verwendung von index.
InformationsquelleAutor user2140261
Andere Möglichkeit ist die Verwendung Finden Funktion:
Einige Hinweise:
Value
. Eine Zeit, die Sie würde verwirrt werden, die mit unerwarteten ErgebnissenCopy/PasteSpecial xlPasteValues
könnten Sie nurRange("A1").Value = Range("B1").Value
in meinem PC mit 100K Zeilen in Spalte A zu Finden gibt mir
0.103125
Index/Match -0.045625
. Ist es nicht eine große differents. Bildschirm~2,5 X schneller ist das nicht ein großer Unterschied? Das ist unglaublich für jemanden, den ich je gearbeitet habe. Aber, mein Kommentar war nicht so viel zu sagen, Ihr Unrecht, so viel wie ich Frage mich, welchen nutzen Ihr Ansatz war, wenn umgeschrieben, das original ist kürzer und schneller, so Frage ich mich, warum Sie fühlte, es war nicht ausreichend, besonders, wenn Sie nur ein match und ausschließen, dass der Index es ist sogar schneller und sauberer.
Getestet habe ich mit 100K Zeilen, und ich glaube, OP hat weniger Zeilen. Wenn für 100K Zeilen wertet für 1/10 sec, ich glaube nicht, dass OP füllen würde keinen Unterschied
InformationsquelleAutor Dmitry Pavliv