我正在使用一本包含大量床单的excel书; 第一张表链接到外部程序并通过外部函数提取数据,导入的行数变化很大.
该块数据通过许多后续表格进行传播.第一步是使用工作表1中的行数填充列A(行名称).从这里,数据被分成多个列(当前为B-> L).顶行使用IF()函数填充第一行,我正在寻找一个干净的宏来将此公式复制到第x行(随每次数据导入刷新而变化),然后粘贴可管理文件大小的值.
这是我到目前为止所得到的; 它工作,但它是公平的(阅读:非常!)笨拙:
Sub Refresh_Data()
Sheets("Sheet2").Select
ActiveWindow.ScrollWorkbookTabs Sheets:=13
Sheets(Array("Sheet2" ... "Sheet25")).Select
Sheets("Sheet2").Activate
Sheets("Sheet25").Select Replace:=False
Range("B1:L1").Select
Selection.Copy
Range("__B2:B1000__").Select
ActiveSheet.Paste
Application.Calculate
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets(Array("Sheet2" ... "Sheet25")).Select
Sheets("Sheet2").Activate
Sheets("Sheet25").Select Replace:=False
Sheets("Sheet2").Select
Range("B3").Select
Sheets(Array("Sheet2" ... "Sheet25")).Select
Sheets("Sheet2").Activate
Sheets("Sheet25").Select Replace:=False
Range("B3:L4").Select
Range("__B2:L1000__").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Check_sheet").Select
MsgBox "Update complete"
End Sub`
Run Code Online (Sandbox Code Playgroud)
我想要实现的主要是B2:L1000用可以评估A列中行数的东西替换代码,并相应地选择行B到L中的范围.
由于列L是最后填充的列,我不明白为什么这也不能水平完成而不是定义"B:L",因为需要添加以后的列.
我正在编写一个宏的部分解决方案,我正在编写,它会隐藏几个不同工作表中的某些(固定位置)行.我目前有:
Sheets(Sheet1).Range("5:20").EntireRow.Hidden = True
隐藏Sheet1中的行5-20.我还想隐藏(为了争论),Sheet2中的第6行,第21行和第35-38行 - 我可以通过重复上面的代码行3次来做到这一点; 但我确信有更好的方法可以做到这一点,就像学习练习一样.
任何帮助非常感谢:)
克里斯
我很快就想知道是否可以以某种方式更改以下代码片段以包含.End(xlToRight)而不是定义L6(结果是相同的)。
Sub Test()
Dim LastCol As String
With Worksheets("Sheet1")
LastCol = .Cells(5, .Columns.Count).End(xlToLeft).Address
.Range(Range("A5"), LastCol).Copy
.Range("B5:L5", Range("B5:L5").Offset(LastRow - FirstRow, 0)).PasteSpecial xlPasteFormulas
.Range("B6", .Cells.SpecialCells(xlCellTypeLastCell)).Copy
.Range("B6").PasteSpecial xlPasteValues
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助:)
编辑:更新了pdw TonyDallimore (请参阅下面的响应)
托尼,上面的代码是我一直努力工作的总和。在该with语句中,我希望复制第5行的内容,并将其粘贴到第n行-该行由columnA中已经存在的列表定义。然后,根据您的建议的最后一行将粘贴除第一行(r5)以外的所有内容的值,以保持用户的透明度,同时最大程度地减小文件大小。中间的位是剩余的“进行中的工作”,因为不确定L5是最远的列。