【问题标题】:VBA Nested If Multiple docsVBA嵌套如果多个文档
【发布时间】:2013-04-28 00:09:53
【问题描述】:

好的,所以我觉得我的编码已经很接近了,但我还没有完成。

我想要做的是让 Excel 查看 B.offset(0, 3) 列中的工作簿 A,对于 = "RF" 的每个值,我希望它检查 B 列中工作簿 B 中的值。偏移量(0, 3)=“射频” . 如果工作簿 B 的值不是“RF”,我希望将每个实例的工作簿 A 列 B 中的值粘贴到同一目的地的工作簿 C 中(例如:b4 到 b4)

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

如果您需要更多信息,请告诉我,感谢您的帮助。 (把我的代码拿出来,因为它没有发布希望这有效)

【问题讨论】:

    标签: excel vba if-statement nested


    【解决方案1】:

    我在理解您的数据组织时遇到了一些问题。在 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 个工作簿/文件,我会将代码放入工作簿 A。将工作簿 A 中的行、col3Data 和 col 11 数据捕获到用户定义类型数组中,其中行对应于数组索引。该结构将包括 Acol3Data、Acol11Data、Bcol3Data、Bcol11Data。 将工作表 A 数据加载到数组后,在工作簿 B 上打开一个 Excel 对象,使用数组的索引加载 Bcol3Data 和 Bcol11Data。关闭 WorkBook B。打开 Workbook C。从数组的顶部开始,完成每个索引值的算法。您将更轻松地使用 objSheet.cells(i,3).value 而不是 offset 语句。 i 是行,3 是列。

    【讨论】:

    • 使用您的代码,我仍然遇到与以前相同的问题,即在我的“for each row in”循环期间,我必须指定一个工作表,当我通过后面的条件时,我想更改工作表,但它超出了范围,所以我想简化我的问题:如何在一个范围内执行“对于每个单元格”,并且作为该循环的一部分,有一个 if 语句引用不同的范围
    • 听起来您没有完全限定您的工作表对象。如果您有多个文档,则需要多个 Excel 对象(ExcelA、ExcelB、ExcelC)。在我的方法中,您一次应该只处理一个工作表,因为您将结果存储在数据结构中。请记住,通过 excel 使用宏生成的 VBA 代码会给您留下很多部分限定的语句。您需要返回并将 .cell、.sheet 等对象与相应的 Excel 对象挂钩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2021-02-21
    相关资源
    最近更新 更多