Suchen und Ersetzen von Zellenwertmakros

Suchen und Ersetzen von Zellenwertmakros

Problem

Ich habe diese 20 Formeln (1 pro Aktiencode) in meiner Tabelle, die von etrade stammen

= PROStaticData (2, "mqg.ASX", "2010/08/10; 2010/08/19; 3; Wahr; Falsch", "10")

Ich möchte in der Lage sein, die Daten auf einmal zu ändern. Ich habe die 2 Zellen eingerichtet. Die Werte, nach denen ich suchen möchte, befinden sich in M8 und M9. Ich möchte sie durch die Werte in L8 bzw. L9 ersetzen. Das funktioniert überall In der Tabelle wird außer in der obigen Formel aus irgendeinem Grund die Formel nicht durchgesehen. Der folgende Code wird von mir verwendet.

 Sub theone () 'Selection.Replace What: = "ValueToFind", Ersetzung: = Range ("A1"). Value, LookAt: = xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, ReplaceFormat: = False 'Range ("B1: B2"). Select Selection.Copy Range ("L8: L9"). Select Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False Range ( "M8"). Wählen Sie Application.CutCopyMode = False Selection.Copy Range ("L8"). Wählen Sie Application.CutCopyMode = False Selection.Copy Cells.Replace What: = Range ("M8"). Value, Replacement: = Range ( "L8"). Value, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Range ("M9"). Value, Replacement: = Bereich ("L9"). Wert, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Bereich ("L8: L9"). Wählen Sie Application.CutCopyMode = False Selection.Copy Range ("M8: M9"). Wählen Sie ActiveSheet.Paste End Sub 

Lösung

Hier sind einige Zweifel in Ihrem Makro

Beispiel

 Bereich ("M8"). Wählen Sie Application.CutCopyMode = False Selection.Copy 

Du kopierst diesen Wert, fügst ihn aber nie ein und gleich mit dem nächsten Block mit L8. Möglicherweise wird kein Code benötigt oder Sie haben das Einfügen vergessen. Der Grund, warum Sie es nicht ersetzen können, liegt darin, dass das Datum in der Formel im Format JJJJ / MM / TT vorliegt. Das Datum, nach dem Sie suchen, ist nicht in diesem Format. Sie müssen also ein weiteres Suchen und Ersetzen hinzufügen, in dem Sie nach dem Datum im Format JJJJ / MM / TT suchen und in demselben ersetzen

 Cells.Replace What: = FORMAT (Bereich ("M8"). Wert, "JJJJ / MM / TT"), Replacement: = FORMAT (Bereich ("L8"). Wert, "JJJJ / MM / TT"), LookAt : = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False 

Hier ist dein überarbeitetes Zeug.

 Sub theone () Dim sDateFind As String Dim sDateRep As String-Bereich ("B1: B2"). Select Selection.Copy Range ("L8: L9"). Select Selection.PasteSpecial Paste: = xlPasteValues, _ Operation: = xlNone, _ SkipBlanks: = False, _ Transpose: = False Range ("M8"). Select Application.CutCopyMode = False Selection.Copy Range ("L8"). Select Application.CutCopyMode = False Selection.Copy sDateFind = Range ("M8") .Value sDateRep = Range ("L8"). Value Cells.Replace What: = Range ("M8"). Value, _ Replacement: = Range ("L8"). Value, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Format (sDateFind, "yyyy / mm / dd"), _ Replacement: = Format (sDateRep, "yyyy / mm / dd "), _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False sDateFind = Range (" M9 "). Value sDateRep = Range (" L9 ") .Wertzellen.Ersetzen Was: = Bereich (" M9 "). Wert, _ Ersetzung: = Bereich (" L9 "). Wert, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Format (sDateFind, "yyyy / mm / dd"), _ Replacement: = Format (sDateRep, "yyyy / mm / dd"), _ LookAt : = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Wählen Sie Application.CutCopyMode = False Selection.Copy Range ("M8: M9 "). Wählen Sie ActiveSheet.Paste End Sub 

Hinweis

Gelöst von rizvisa1

Vorherige Artikel Nächster Artikel

Top-Tipps