VBA在两个表格中搜索P / N并复制数据

时间:2016-07-14 14:24:27

标签: excel git vba excel-vba macros

这是我的第一个VBA计划并发布在这里,所以放轻松:D。 我是一名在AeroSpace部门工作的暑期实习生,我们的项目主要涉及头部卫星生产,我负责向客户提供最终产品数据包。 其中一个可交付成果包括称为As Design As Build。 从本质上讲,我制作了一个宏,可以在一张纸上搜索P / N到另一张纸。两者都是计数器的控制器,x是Bom表的计数器,y是主表的计数器。如果P / N相等,则将一些单元格从BOM复制到主表单。 这里的BOM是不断变化的表格,而Master是每辆车应该拥有的。 缺少物品是我的问题。我已经对它进行了编码,因此物料清单中缺少的物品只会在主机中跳过,留空。但是,如果物料清单上有一个不在主设备上的项目,它会搜索所有行,点击结束,然后中断。我试过添加它来反击它,但它似乎没有起作用:

    Else
    y = y + 1
    If (y = FinalRow) Then
    x = x + 1 

如果y值已到达主表的末尾以继续循环,我几乎试图碰撞x值或在Bom表上向下移动一行。 任何帮助/批评都会很棒! 子ADAB() '需要Master和Bom工作表

Dim dataFile As String
Dim WB As Workbook
Dim x As Integer
Dim y As Integer
Dim iFound As Integer
Dim BomValue As String
Dim MasterValue As String

'Set variables
Workbooks("ADAB Tool.xlsm").Activate
dataFile = Cells(1, 1).Value
Set WB = Workbooks.Open(Filename:=dataFile, ReadOnly:=False)
'Open workbook from path

    Worksheets("Master").Activate
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
    y = 2
    x = 2
Do While (y <= FinalRow)
    Workbooks("ADAB1.xlsx").Activate
    Worksheets("Bom").Activate
    BomValue = Worksheets("Bom").Cells((x), 1).Value
        MasterValue = Worksheets("Master").Cells((y), 1).Value
        iFound = 0
        If (BomValue = MasterValue) Then
            Worksheets("Master").Activate
            Worksheets("Bom").Activate
            Dim Range As Range
            Set Range = Worksheets("Bom").Range(Cells(x, 1), Cells(x, 4))
            Worksheets("Master").Activate
            Worksheets("Master").Range(Cells(y, 3), Cells(y, 6)) = Range.Value
            iFound = 1
            x = x + 1
            y = y + 1
        Else
            y = y + 1
            If (y = FinalRow) Then
            x = x + 1
        End If
    End If
Loop
End Sub

2 个答案:

答案 0 :(得分:0)

我没有看到需要继续“激活”你的床单。你应该只是创建对象......它会让你的生活更轻松

from django.conf.urls import include, url
from app.api_v2.api import api_v2

import app.views

urlpatterns = [
    ...
    url(r'^api/v2/', include(api_v2.urls)),
    ...
]

然后你可以从那时起将它称为“主人”。

dim master as worksheet
set master = thisworksbook.worksheets("master")

至于你的问题,我可能会考虑制作一组P / N,然后循环通过Master并寻找匹配......似乎你试图为一个小循环完成太多!但是很难从你的描述中看出来,只是我的两分钱!

答案 1 :(得分:0)

经过一些调整后,我能够解决问题。通过在y增量之前指定z = y,z在ElseIf语句中充当y = y-1。

    If (BomValue = MasterValue) Then
        Worksheets("Master").Activate
        Worksheets("Bom").Activate
        Dim Range As Range
        Set Range = Worksheets("Bom").Range(Cells(x, 1), Cells(x, 4))
        Worksheets("Master").Activate
        Worksheets("Master").Range(Cells(y, 3), Cells(y, 6)) = Range.Value
        iFound = 1
        z = y
        x = x + 1
        y = y + 1
    ElseIf (y >= FinalRow And x < FinalRowBom) Then
        x = x + 1
        y = z
    Else
        y = y + 1
    End If
Loop

这能够遍历整个文档,并没有被任何项目所吸引。 感谢您的所有意见!