セル値マクロを見つけて置き換える

セル値マクロを見つけて置き換える

問題

私のスプレッドシートには、etradeから来たこれらの20の式(1つの銘柄コードにつき1つ)があります。

= PROStaticData(2、 "mqg.ASX"、 "2010/08/10; 2010/08/19; 3; True; False"、 "10")

私は一度にすべての日付を変更することができるようにしたい、私は探したい値がM8とM9にある2つのセルを設定していて、それぞれL8とL9の値に置き換えたいと思っています。スプレッドシートでは、何らかの理由で上記の式を除いて、式を見通すことはできません。以下は、私が使用しているコードです。

 Sub theone() 'Selection.Replace What:= "ValueToFind"、Replacement:= Range( "A1")。Value、LookAt:= xlPart、SearchOrder:= xlByRows、MatchCase:= False、SearchFormat:= False、ReplaceFormat:= False 'Range( "B1:B2")選択範囲を選択します。コピー範囲( "L8:L9")Selection.PasteSpecial Pasteを選択します。= xlPasteValues、Operation:= xlNone、SkipBlanks _:= False、Transpose:= False Range( Application.CutCopyMode = Falseを選択します。CopyRange( "L8")Application.CutCopyMode = Falseを選択します。CopyCells.Replace What:= Range( "M8")。Value、Replacement:= Range( "M8")。値、LookAt:= _ xlPart、SearchOrder:= xlByRows、MatchCase:= False、SearchFormat:= False、_ ReplaceFormat:= False Cells.Replace What:= Range( "M9")。値、置き換え: = Range( "L9")値、LookAt:= _ xlPart、SearchOrder:= xlByRows、MatchCase:= False、SearchFormat:= False、_ ReplaceFormat:= False Range( "L8:L9")Application.CutCopyMode =を選択します。 False Selection.Copy Range( "M8:M9")。ActiveSheetを選択します。End Subの貼り付け 

溶液

ここにあなたのマクロにいくつかの疑問があります

 範囲( "M8")を選択しますApplication.CutCopyMode = False Selection.Copy 

あなたはこの値をコピーします、しかしそれを決してペーストしないでくださいそしてL8で次のブロックと同じ。 コードが必要ないか、貼り付け忘れた可能性があります。 式に含まれている日付はYYYY / MM / DDの形式であるため、それを置き換えることができない理由。 検索している日付はその形式ではありません。 そのため、YYYY / MM / DD形式で日付を検索する場所と検索場所をもう1つ追加して置き換える必要があります。

 Cells.Replace What:= FORMAT(範囲( "M8")。値、 "YYYY / MM / DD")、置換:= FORMAT(範囲( "L8")。値、 "YYYY / MM / DD")、LookAt := _ xlPart、SearchOrder:= xlByRows、MatchCase:= False、SearchFormat:= False、_ ReplaceFormat:= False 

これがあなたの作り直したものです。

 Sub theone()Dim sDateFind as文字列Dim sDateRep As文字列範囲( "B1:B2")選択範囲を選択します。コピー範囲( "L8:L9")選択範囲を選択します。貼り付け特殊ペースト:= xlPasteValues、_操作:= xlNone、_ SkipBlanks:= False、_ Transpose:= Falseの範囲( "M8")Application.CutCopyMode = Falseの選択Collection.Copy Range( "L8")を選択します。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 ")値sDateRep = Range(" L9 ").Value Cells.Replace What:= Range(" M9 ")。Value、_ Replacement:= Range(" L9 ")。Value、_ LookAt:= xlPart、_ SearchOrder:= xlByRows、_ MatchCase:= False 、_ SearchFormat:= False、_ ReplaceFormat:= False Cells.Replace What:=フォーマット(sDateFind、 "yyyy / mm / dd")、_置換:=フォーマット(sDateRep、 "yyyy / mm / dd")、_ LookAt := xlPart、_ SearchOrder:= xlByRows、_ MatchCase:= False、_ SearchFormat:= False、_ ReplaceFormat:= False Range( "L8:L9")。Application.CutCopyMode = False Selection.Copy Range( "M8:"を選択してください。 M9 ")。ActiveSheetを選択します。End Subの貼り付け 

注意

rizvisa1によって解決

前の記事 次の記事

トップのヒント