这是我第一次尝试编写宏,花了一周时间搜索解决方案并尝试各种代码 - 我仍然无法解决这个问题。如果有办法发布工作簿,那将是很好的,但我不知道如何做到这一点。
我需要一个宏来复制WEEK1工作表中的数据并粘贴到WEEK2工作表。
当用户选择WEEK2工作表并按下"更新数据"按钮我需要宏来
这是我到目前为止的MACRO。它适用于步骤1和步骤1。 2以上。但它继续复制工作表中的所有行,即使任何行中没有数据也是如此。
根据T列中是否有日期的情况,不知道如何不复制行 - 不要复制,当我粘贴到工作表WEEK2时,行高不会保持不变如果复制了更多行,则复制行,然后是week2 sheet。希望这是有道理的
这是Macro
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
答案 0 :(得分:0)
在#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 :(得分:0)
应该使1-4发生,假设过滤器已打开。希望我能正确阅读你正在寻找的东西。
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