根据条件从一个工作表复制数据到另一个工作表

这是我写macros的第一次尝试,花了一个多星期的时间寻找解决scheme并尝试各种代码 – 我仍然无法弄清楚这一点。 如果有办法发布工作簿,这将是伟大的,但我不知道如何做到这一点。

我需要一个macros从WEEK1工作表复制数据并粘贴到WEEK2工作表。

当用户selectWEEK2工作表并按下“更新数据”button时,我需要macros

  1. 转到WEEK1工作表
  2. 取消过滤数据,所有的数据都可以被复制(并添加filterbutton)
  3. 复制:从列A行7到列T(不需要复制标题/标题行)向下复制到包含数据的最后一行,除非列T中logging了date,则不需要复制此行
  4. 转到WEEK2并从第7行开始粘贴数据
  5. 保持所有粘贴的ROWS在相同的高度(60.00或80像素)。

这是我到目前为止的MACRO。 它适用于上面的步骤1和2。 但是,即使在任何行中没有数据,它仍会继续复制工作表中的所有行。

不知道如何根据T列中是否存在date的条件来复制一行 – 不要复制,当我粘贴到工作表WEEK2时,行高不保持与复制行相同(如果存在的话)更多的行复制,然后week2表了。 希望这是有道理的

这是macros

Sub WEEK2UPDATE() ' WEEK2UPDATE Macro ' Update by Copying Data from Week 1 and Pasting to Week 2 worksheet Sheets("WEEK1").Select Selection.AutoFilter ActiveWindow.SmallScroll Down:=0 Selection.AutoFilter ActiveWindow.SmallScroll Down:=24 Range("A100").Select Selection.End(xlUp).Select Range("A7:T100").Select Range("A7:T100").Activate Selection.Copy Sheets("WEEK2").Select Range("A7:T100").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Sheets("WEEK1").Select ActiveWindow.SmallScroll Down:=-15 Range("A2:T2").Select Sheets("WEEK2").Select Range("A2:N2").Select End Sub 

#4之后,使用此代码删除第2周工作表中不需要的行,然后将所有粘贴行的行高度从7格式化为最大值。 如果列T对于要保留的行不是空白的,则需要修改。

 lrowEnd = Cells(Rows.Count, "A").End(xlUp).Row ' finds last row on worksheet For iRow = lrowEnd To 7 Step -1 'checks rows from bottom to top If Cells(iRow, 20).Value <> "" Then Rows(iRow).Delete Shift:=xlUp ' checks for a non-blank column T (20th column) to delete Next iRow 'continue to next row lrowEnd = Cells(Rows.Count, "A").End(xlUp).Row ' finds last row on worksheet after deleting Rng = "7:" & lrowEnd 'creates a range variable Rows(Rng).Select 'selects the entire range Selection.RowHeight = 80 ' set row height to 80, change this number as needed 

应该让1-4发生,假设filter打开。 希望我阅读你正在寻找的东西。

  Sheets("WEEK1").Select Selection.AutoFilter Range("A7:T" & ActiveWorkbook.Activesheet.UsedRows.Count).Select 'select just Selection.Copy 'used rows Sheets("WEEK2").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False