2017-08-25 10 views
1

2つの異なるワークシート上の2つのセルが同じかどうかをチェックするコードを記述しようとしています。そして、それらが同じであれば、VLOOKUPを使用して、異なるセルに割り当てられた値の差を見つけることができます。異なるワークシート上のVBA VLookupセル

これはこれまでに書いたものですが、エラーメッセージが表示され続けます。

オブジェクトはこのプロパティまたはメソッド

をサポートしていないと理由を把握することはできません。誰も入力を与えることができますか?ありがとう!計算を行い、それがある場合は、A506および値が他のシートであるかどうかを確認して:私はこのことを推測してい

Sub testing() 

Product = Range("A2:A506") 
Set myrange = Worksheets("open_prices").Range("A2:D506") 
Set myrange2 = Worksheets("close_prices").Range("A2:B506") 

Dim popen As Integer 
Dim pclose As Integer 

Dim ws As Worksheet 

For Each Cell In Workbooks("TDO VBA Test.xlsx") 
    If Worksheets("open_prices").Range("A2:A506") = Worksheets("close_prices").Range("A2:A506") Then 
      popen = WorksheetFunction.VLookup(Product, myrange, 4, False) 
      pclose = WorksheetFunction.VLookup(Product, myrange2, 2, False) 
      result = popen - pclose 
    End If 
Next Cell 

End Sub 
+1

「For Each Cell In Inbook( "TDO VBA Test.xlsx")」では何を意図していますか? – YowE3K

+0

私は比較しようとしている2つのセルが同じワークブックの別のワークシートにあるため、 –

+0

@jsotolaそれは失敗する 'For'になります - 私は' Workbook'内のデフォルトオブジェクトが何であるか分かりませんが私はそれが繰り返すことができるかどうかは疑問です。 – YowE3K

答えて

2

あなたは1枚のA2内の各セルを反復つまり、やろうとしているものです。

Sub testing() 

    Dim popen As Integer 
    Dim pclose As Integer 
    Dim result As Integer ' Are you sure these are integers? Usually prices will be Double 

    Dim VLookupResult As Variant 
    Dim cel As Range 

    For Each cel In Worksheets("open_prices").Range("A2:A506").Cells 
     popen = cel.Offset(0, 3).Value 
     VLookupResult = Application.VLookup(cel.Value, Worksheets("close_prices").Range("A2:B506"), 2, False) 
     If Not IsError(VLookupResult) Then 
      pclose = VLookupResult 
      result = popen - pclose 
      ' You will need to decide what to do with this "result" now 
      ' that it has been calculated 
     End If 
    Next cel 

End Sub 
+0

ありがとうございます!私がこれを正しく行っているなら、505回の計算が必要です...そして、私がしたいことは、すべての計算の中で最大の結果を見つけることです...私はこれをどうやってやるか知っていますか? –

+0

@maddieはい、値が0に設定されている変数から始めてください。 'result'が計算されるたびに、' result'がそれより大きいかどうかテストし、そうであれば変数を 'result'の値に設定してください。ループが終了すると、その変数には 'result'の最大値が入ります。一度コードを書き込もうとしたらうまくいかない場合は、あなたが試したことを示す新しい質問を出してください。 – YowE3K

+0

P.S. @maddieコードを作成する前に考えること:(a)最大の結果(オープンとクローズの間で最も価格が下がったところ)か、最小のもの(価格が最も高くなったところ)か? (b)あなたは、最大/最小絶対差、または最大/最小パーセント差の後、つまり10が9対1に減少したこと、または1011が10対1001減少したことを知りたいですか? (c)最大/最小の相違点、またはその相違点を見つけようとしていますか?YowE3K感謝@ – YowE3K

関連する問題