使用来自2个不同工作簿的列在VBA excel中创建if语句

时间:2016-07-28 00:30:59

标签: excel vba excel-vba

假设我有变量,yes_n和yes_d。 D表示分母,n表示分子。我有工作簿A,平面文件和工作簿B,参考文件。我试图从两个不同的工作簿中提取列,然后如果工作簿A,工作表A,列A中的单元格中的单词=工作簿B,工作表,列B中单元格中的单词以及左侧列中的单词单元格B是肯定的,然后在我的变量yes_d中添加一个。然后,如果工作簿A的单元格D中的单词是“某个值”,则也将1加到分子中。我怎么说“if cellA(workbookA.SheetA.columnA)= cellB(workbookB.SheetB.columnB)和B =”是“的偏移然后是yes_d + 1.如果cellDworkbookA.SheetA.columnD)=”某个值“然后是yes_n + 1。

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

1 个答案:

答案 0 :(得分: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