使用其他工作表

时间:2017-07-11 15:06:31

标签: excel vba excel-vba

我有三张表,Sht1有我的基本数据,sht2,有上周的数据,sht3有一个当前周的数据。

我正在将数据从sht1复制到sht3,它在columnJ中的状态为红色。 复制后,我查看最后一周的sht并检查L中的值,然后在本周的表格中填写N,O,P列。

在下一步中,每当我点击一个按钮时,lastweeksht应该按照当前周表中的数据进行更新,应该删除当前周并使用新结果进行评估。我该怎么做。我应该做最后一步将数据移到上周并将此周更新为新结果?我很困惑如何做到这一点。

下面是代码,我用于将状态从Basic sht复制到本周以及我在本周使用的vlookup公式。

Sub red()
Dim cell As Range
Dim nextrow As Long
Application.ScreenUpdating = False
For Each cell In Sheets("Red").Range("J5:J" & Sheets("Red").Cells(Sheets("Red").Rows.Count, "J").End(xlUp).Row)
If cell.Value = "rd" Then
nextrow = Sheets("ThisWeek").Cells(Sheets("ThisWeek").Rows.Count, "J").End(xlUp).Row
Rows(cell.Row).Copy Destination:=Sheets("ThisWeek").Range("A" & nextrow + 1)
End If
Next
Application.ScreenUpdating = True
End Sub

Sub lookup()
Dim tr As Long
Dim trsh As Long
tr = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
trsh = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
Sheets("ThisWeek").Range("M2:M" & tr).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("ThisWeek").Range("L2:L" & trsh), Sheets("LastWeek").Range("$A:$P"), 13, 0), "")
End Sub

Sub lookupredaction()
Dim tr1 As Long
Dim trsh1 As Long
tr1 = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
trsh1 = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
Sheets("ThisWeek").Range("N2:N" & tr1).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("ThisWeek").Range("L2:L" & trsh1), Sheets("LastWeek").Range("$A:$P"), 14, 0), "")
End Sub

Sub lookupredoverdue()
Dim tr2 As Long
Dim trsh2 As Long
tr2 = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
trsh2 = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
Sheets("ThisWeek").Range("O2:O" & tr2).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("ThisWeek").Range("L2:L" & trsh2), Sheets("LastWeek").Range("$A:$P"), 15, 0), "")
End Sub

Sub lookupcomments()
Dim tr3 As Long
Dim trsh3 As Long
tr3 = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
trsh3 = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
Sheets("ThisWeek").Range("P2:P" & tr3).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("ThisWeek").Range("L2:L" & trsh3), Sheets("LastWeek").Range("$A:$P"), 16, 0), "")
End Sub

这是我的工作表的基本数据的样子。我总是从数据库中获取数据并以这种方式粘贴 Image 1

上半部分是第二张图片。我把这张纸称为上周。此工作表有一个额外的列E和F,其中包含Actions并且未评估Actions。目前,这张表取自上周的计算。在G列中我有一个公式,它计算CW。下面是我的第三张图片的样本图片,我称之为本周。在G列中,我有一个计算CW的公式。在这里,我使用第一个代码,它总是将状态用红色复制到本周。然后,我使用查找代码查看A列中的ID(根据dumy表)并相应地复制Actions和no Actions。 Image 2

现在我想要的是,我的Basic工作表中的一个按钮,当我点击按钮时,它应该删除上周并将本周的数据更新为上周。本周数据应该删除。

后来我的Basic工作表中有一个按钮,其中包含我在帖子中的所有代码,我可以计算新的数据集。我已经完成了一半,而另一半则是如何实现的。有人可以帮助我实现这一目标。我会感激你的。并且会通过编程来提高自己。提前谢谢。

1 个答案:

答案 0 :(得分:0)

将此作为答案发布,因为它适合您,

  • 使用Range.ClearContents清除lastweek表格中的数据
  • 使用Range.Copy Destination将数据从presentweek复制到lastweek
  • 使用明确内容清除presentweek中的数据。

您可以使用Sheets("ThisWeek").Range("A1:B10")(示例)操作具有相同宏的不同工作表。