2013-05-03 86 views
-1

好吧,所以我觉得我在我的编码接近,但我不是那里。VBA嵌套如果多个文档

我想要做的就是看看工作簿A在B.offset(0,3)列中,并且对于每个值=“RF”我希望它检查B列中工作簿B中的值.offset(0,3)=“RF” 。 如果工作簿B值不是“RF”,我希望工作簿中的值每个实例的列B都要粘贴到同一目的地的工作簿C中(例如:b4到b4)

如果工作簿B值为“RF”我希望excel能够查看列B.offset(0,11)中的值对于工作簿A和B.对于每个工作簿A列B.offset(0,11)>工作簿B列B的实例。偏移量(0,11)我想将工作簿A列B的值发布到相同的目标中。 (我没有开始第二部分,因为代码已经搞乱了,但下面是我的代码)

如果您需要更多信息并感谢帮助,请让我知道。 (把我的代码因为它没有发布希望这个作品)

回答

0

我在理解数据的组织方面有点麻烦。用Excel表示,WorkBook是工作表的集合,并以Excel文件的形式存在。我假设你正在使用三个Excel文件。您使用的偏移量与偏移量(范围,行,列)的语法不匹配。您是否对每行数据执行这组评估 - 使用WorkBook A,列B作为主数据?
这里的算法,按我的理解:

For each row in WorkbookA.ColB(offset 3) 
    if workbookA.colB(offset 3).value = "RF" then 
     If workbookB.colB(offset 3).value <> "RF" then 
      workbookC.colB(offset 3).value = workbookA.colB(offset 3).value 
     ELSE 
      Avar = workbookA.colB(offset 11).value 
      Bvar = workbookB.colB(offset 11).value 
      if Avar > Bvar Then 
       workbookC.colB(offset 11).value = Avar 
      End if 
     end if 
    end if 
Next row 

所以工作簿C有越来越0-1列每行更新的可能性。使用3个工作簿/文件,我会将代码放入WorkBook A.将工作簿A中的行col3Data和col 11数据捕获到User-Defined-Type数组中,其中行对应于数组索引。该结构将包括Acol3Data,Acol11Data,Bcol3Data,Bcol11Data。 将工作表A数据加载到数组后,在WorkBook B上打开Excel对象,使用数组的索引来加载Bcol3Data和Bcol11Data。关闭WorkBook B.打开工作簿C.从数组的顶部开始,逐个处理每个索引值的算法。使用objSheet.cells(i,3).value代替偏移量语句会更容易。我是行,3是列。

+0

使用你的代码我仍然遇到与之前相同的问题,在我的“for each row in”循环中,我必须指定一个工作表,并且当我经历了稍后的条件时,如果要更改工作表,它超出了范围,所以我想简化我的问题:我如何做一个范围内的“对于每个单元格”,并作为该循环的一部分有一个if语句指向一个不同的范围 – 2013-05-04 12:14:45

+0

这听起来像你不完全限定您的工作表对象。如果您有多个文档,则需要多个Excel对象(ExcelA,ExcelB,ExcelC)。在我的方法中,您应该一次只处理一个工作表,因为您将结果存储在数据结构中。请记住,通过excel使用宏生成的VBA代码会给你带来很多部分限定的语句。您需要返回并将.cell,.sheet等对象挂接到相应的Excel对象。 – user652411 2013-05-06 13:45:27

+0

发布您的代码给出了超出范围的错误。 – user652411 2013-05-06 14:20:31