2016-07-28 3 views
0

変数「yes_n」と「yes_d」があるとします。分母はD、分子はnです。私は、ワークブックA、フラットファイル、およびワークブックB、参照ファイルを持っています。私は、2つの異なるブックから列を引き出そうとしている場合、ブックA、シートA、列A =ブック内のセル内の単語B、シート、列B、および左の列の単語セルBの変数がyesであれば、変数yes_dに1を加えます。その後、ワークブックAのセルDの単語が「ある価値」であれば、分子にも1を加えます。もしcellA(workbookA.SheetA.columnA)= cellB(workbookB.SheetB.columnB)とB = "yes"、そしてyes_d + 1のオフセットのような場合、どうすればいいですか?cellDworkbookA.SheetA.columnD)= "ある値「その後、yes_n + 12つの異なるブックからの列を使用してVBAでif文を作成する

For M = 2 To 1000 
    For R = 2 To 60 

     If Workbooks("\flatfile.xlsb").Worksheets("ifyesorno").Range("A" & M) = _ 
      Workbooks("\referencefile.xlsm").Worksheets("reference1").Range("B" & R)_ 
      And Workbooks("\referencefile.xlsm").Worksheets("reference1").Range("A"_ 
      & R).Value = "yes" Then 

      yes_d = yes_d + 1 

      If Workbooks("\flatfile.xlsb").Worksheets("ifyesorno").Range("D" & M) = "some value" Then 

       yes_n = yes_n + 1 

      End If 
     End If 

    Next 
Next 
+0

yes_nが増分されるのは、yes_dが増分される場合だけですか?例えばifyesornoの列Aの値= reference1の列Bの値がreference1の列Aが「no」の場合、ifyesornoの列D =「some value」の場合もyes_nはインクリメントされますか? – YowE3K

+0

参照1の列Aは、必ずしもyesまたはnoではない任意の値になります。最初のif文がtrueで、2番目のif文がtrueで、最初のif文がtrueの場合にのみ、yes_dが常にインクリメントされます。yes_nはインクリメントされます。 – durba138

+0

あなたのコードは現在動作しません。あなたは 'Workbooks(" \ flatfile.xlsb ")'を参照していますか? (私はちょうど 'Workbooks(" flatfile.xlsb ")'、つまり "\"を取り除くべきだと思います) – YowE3K

答えて

1

あなたのコードのロジックは、すでにあなたの基準を満たしています。あなたが不適切に開いているブックを参照した。ワークブックが開かれていないなら、あなたはそれらを開く必要があります。スペースが必要とされています。コードと行継続間_

不正:.Range("B" & R)_

正しい.Range("B" & R) _

参照を短くする変数を作成すると、コードの可読性が大幅に向上します。

Dim wsFlat As Worksheet, wsReference As Worksheet 
Set wsFlat = Workbooks("flatfile.xlsb").Worksheets("ifyesorno") 
Set wsReference = Workbooks("referencefile.xlsm").Worksheets("reference1") 

For M = 2 To 1000 
    For R = 2 To 60 

     If wsFlat.Range("A" & M) = wsReference.Range("B" & R) And wsReference.Range("A" & R).Value = "yes" Then 

      yes_d = yes_d + 1 

      If wsFlat.Range("D" & M) = "some value" Then 
       yes_n = yes_n + 1 
      End If 
     End If 

    Next 
Next 
+0

あなたは私の忍者のスピードと一致しません! –

関連する問題