假设我有变量,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
答案 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