我正在创建一个模板,其中从报表下载的值表可以粘贴到输入选项卡中,并在另一个选项卡上的格式化表中返回这些值,其中包含一些公式。
C,D和C列; E包含项目代码的第1,2和3部分,列F包含行标题(例如可用数量,发票订单等)。
之后的列(G到Z)主要包含查找,这些查找将查找列C,D,E和F的串联,这些列出现在列B中。但是,行12和24具有不同的公式和行15& 16不含配方。一个项目的数据占用13行(在第12行和第24行之间)。
我一直试图找到一个宏,可以,就像我选择范围B12:Z24一样,拖动/自动填充公式并格式化到A列中包含值“X”的最后一行。“X “在A列中指示输入选项卡上相应行中是否有值,并且可以在500行到8000行之间变化。
我是一个初学者,所以无论我写的是什么都很基本,但这是我尝试过的:
Sub FillDown()
Range("B12:Z24" & Range("A" & Rows.Count).End(xlUp).Row).FillDown
End Sub
这与我从谷歌中提取的任何更复杂的代码一样。
的示例 的示例我试过的任何东西只是从第12行向下复制/自动填充公式和格式,而不是表格的整个部分..任何建议?
**
** 道歉,几周前我想出了这个,但忘了在这里发帖: 我没有创建新的部分(我正在调用行12到24“部分”),而是创建了一个包含一定数量部分的表,并获得了一个循环,将公式从第13行转换为第23行(我想要将公式保留在第12行和第24行中,并对以下部分进行相同的操作。需要一些时间在更大的范围,但做的工作。 的代码:
Sub Pasteloop()
Application.ScreenUpdating = False
Dim i As Long
Dim ii As Long
Dim LastRow As Long
Dim wb As Workbook
Dim sht1 As Worksheet
Dim j As Long
Dim jj As Long
Set wb = ThisWorkbook
Set sht1 = wb.Sheets("Output")
LastRow = 130 'a number 1 bigger than the last row to paste
i = 13 'start row of the 1st select
ii = 23 'end row of the 1st select
j = 13 'start row of the 2nd select
jj = 23 'end row of the 2nd select
k = 7 'column number of the left hand column of the range
p = 260 'column number of the right hand column of the range
'This is the beginning of the loop
Do While i < LastRow
'set the next range as the previous range values
sht1.Range(Cells(j, k), Cells(jj, p)) = sht1.Range(Cells(i, k), Cells(ii,
p)).Value
'move along to the next selection by incrementing everything by 12
ii = ii + 12
i = i + 12
jj = jj + 12
j = j + 12
Loop
Application.ScreenUpdating = True
End Sub
这将每周更新报告的开放时间从几分钟缩短到几秒钟。
答案 0 :(得分:0)
如果您只想让所有数据在视觉上不可见,除了&#34;可用数量&#34;行,使用条件格式
你的例子从第12行开始
单元格C12 ....条件格式....使用公式确定单元格格式....公式.... = C11 ....颜色白色白色(设置为红色进行测试)
然后根据需要将格式复制到三列
答案 1 :(得分:0)
我没有创建新的部分(我正在调用行12到24“部分”),而是创建了一个包含一定数量部分的表,并获得了一个循环,它将公式转换为从第13行到第13行的值23(我希望将公式保留在第12行和第24行),并对以下部分做同样的事情。需要一些时间在更大的范围,但做的工作。代码:
Sub Pasteloop()
Application.ScreenUpdating = False
Dim i As Long
Dim ii As Long
Dim LastRow As Long
Dim wb As Workbook
Dim sht1 As Worksheet
Dim j As Long
Dim jj As Long
Set wb = ThisWorkbook
Set sht1 = wb.Sheets("Output")
LastRow = 130 'a number 1 bigger than the last row to paste
i = 13 'start row of the 1st select
ii = 23 'end row of the 1st select
j = 13 'start row of the 2nd select
jj = 23 'end row of the 2nd select
k = 7 'column number of the left hand column of the range
p = 260 'column number of the right hand column of the range
'This is the beginning of the loop
Do While i < LastRow
'set the next range as the previous range values
sht1.Range(Cells(j, k), Cells(jj, p)) = sht1.Range(Cells(i, k), Cells(ii,
p)).Value
'move along to the next selection by incrementing everything by 12
ii = ii + 12
i = i + 12
jj = jj + 12
j = j + 12
Loop
Application.ScreenUpdating = True
End Sub
这将每周更新报告的开放时间从几分钟缩短到几秒,并且比执行相同作业的复制/粘贴代码更有效,并且使您能够在代码运行时使用剪贴板,这是您不可能的能够复制/粘贴代码。