自动更新工作表2&根据数据,来自表1的表3

时间:2016-05-09 05:37:13

标签: vba excel-vba excel

我想自动更新表2&根据数据,来自表1的表3。如果它得到解决将会有所帮助。

我是视觉基本编码的新手,所以不知道它的脚本但是知道c ++。无论解决方案是什么,它都会有所帮助。

三张纸的屏幕截图 - 我无法上传Excel文件

screenshot

我尝试过以下代码:

Sub FindMatches()
    Dim oldrow As Integer
    Dim newrow As Integer
     For oldrow = 4 To 14
        For newrow = 3 To 20
            If Cells(oldrow, 12) = Cells(1, newrow) And Cells(oldrow, 13) = Cells(newrow, 1) Then  'date and brand
                    If Cells(1, 14) = Cells(newrow, 2) Then
                          Cells(newrow, 3).Value = Cells(oldrow, 14).Value ' m1
                    End If
                    If Cells(1, 15) = Cells(newrow + 1, 2) Then
                          Cells(newrow + 1, 3).Value = Cells(oldrow, 15).Value ' m2
                    End If
                    If Cells(1, 16) = Cells(newrow + 2, 2) Then
                                    Cells(newrow + 2, 3).Value = Cells(oldrow, 16).Value ' m3
                    End If
                    If Cells(1, 17) = Cells(newrow + 3, 2) Then
                                        Cells(newrow + 3, 3).Value = Cells(oldrow, 17).Value ' issue
                    End If
                    If Cells(1, 18) = Cells(newrow + 4, 2) Then
                                            Cells(newrow + 4, 3).Value = Cells(oldrow, 18).Value ' repack
                    End If
                    If Cells(1, 19) = Cells(newrow + 5, 2) Then
                                                Cells(newrow + 5, 3).Value = Cells(oldrow, 19).Value ' extra
                    End If
                    If Cells(1, 20) = Cells(newrow + 6, 2) Then
                    Cells(newrow + 6, 3).Value = Cells(oldrow, 20).Value ' wastage
                    End If
         End If

        Next newrow
        Next oldrow
End Sub

2 个答案:

答案 0 :(得分:1)

也许您甚至不需要VBA来更新数据。您只需在单元格中输入公式=C2即可引用单元格(并从中检索数据)。

您还可以引用其他工作表中的单元格,例如=Sheet1!C2

您可以使用诸如IF之类的函数来执行更复杂的案例和逻辑。

答案 1 :(得分:0)

如果没有工作表引用,您就无法使用Cells。因为excel不知道你要使用哪张表并假设活动表。因此,您需要ActiveSheet.cells()并切换活动表(但不强烈推荐)。而是像这样使用工作表声明

Dim myLovelySheet as worksheet
Set mylovelySheet = Sheets("yourCuteSheetname")

然后你可以像使用对象一样使用表格(你会熟悉C ++)

myLovelySheet.cells()

或者你可以使用像这样的结构在工作表上执行多个操作

with myLovelySheet
.cells()
.cells()
'etc

end with

基本上你的方法几乎是正确的,但尝试研究更多的代码。我可以推荐this,其中包含多个具有良好实践的示例