我正在尝试创建一个电子表格,我在工作表的单元格中有一个名为" Equipment"单元格C5,例如值为4.
我需要使用此值复制同一行的一部分(D5:M5)并将其多次粘贴到名为"编程"的工作表中。如果这个改变我希望它删除或添加在需要的地方,忽略在"设备"中的空白或0值的位置。片
我有大约30个不同的项目,所有项目都有不同的部分要复制,但它们的大小相同。这也可以在同一列中查看所有值的列表,并对所有值
执行相同操作我对VBA很新,并设法隐藏和显示基于价值观的标签,但我很难理解这一点,因为它在这一点上有点过于复杂。 / p>
提前谢谢
利
这是我到目前为止所做的,我已将代码编辑为我认为正确的但仍然无法正常工作
Sub copySheetCells()
'loop by each cell in column "C"
For i = 2 To Sheets("Equipment").Cells(Rows.Count, "C").End(xlUp).Row
'repeat copy x times (based on cell in column "C" value)
For j = 0 To (Sheets("Equipment").Cells(i, "C").Value - 1)
'define source range
Source = "D" & (i) & ":M" & (i)
'find last row on second sheet
lastRowS2 = Sheets("Hardware_Programming").Cells(Rows.Count, "A").End(xlUp).Row
'copy data
Sheets("Equipment").Range(Source).copy Destination:=Sheets("Hardware_Programming").Range("A" & lastRowS2 + 1)
Next j
Next i
'copy headers
Sheets("Equipment").Range("D1:M1").copy Destination:=Sheets ("Hardware_Programming").Range("A1:J1")
End Sub
我只能得到空白,是否有人能够进一步提出建议?
答案 0 :(得分:1)
在这里,使用此宏。基于最初请求的名称Programming
和Equipment
。
Sub copySheetCells()
'loop by each cell in column "C"
For i = 2 To Sheets("Programming").Cells(Rows.Count, "C").End(xlUp).Row
'repeat copy x times (based on cell in column "C" value)
For j = 0 To (Sheets("Programming").Cells(i, "C").Value - 1)
'define source range
Source = "D" & (i) & ":M" & (i)
'find last row on second sheet
lastRowS2 = Sheets("Equipment").Cells(Rows.Count, "A").End(xlUp).Row
'copy data
Sheets("Programming").Range(Source).copy Destination:=Sheets("Equipment").Range("A" & lastRowS2 + 1)
Next j
Next i
'copy headers
Sheets("Programming").Range("D1:M1").copy Destination:=Sheets("Equipment").Range("A1:J1")
End Sub
请避免复制答案中的代码并将其发回给您的问题,我将Sheet1
替换为Programming
,以便您可以在工作簿中重命名该工作表。
Macro似乎做了它的工作,没有提供Sheet1 / Programming中的数量(列" C"根据您的初始要求):
答案 1 :(得分:0)
希望这能解决你的问题:)
For i = 1 To 30 Step 1
If Sheets("Equipment").Cells(1 + 4, 3).Value > 0 Then
Sheet1.Range(Cells(i + 3, 5), Cells(i + 3, 13)).Copy
For j = 1 To Sheet1.Cells(1 + 4, 3).Value Step 1
LR = Sheets("Programming").Cells(Sheets("Programming").Rows.Count, "A").End(xlUp).Row
Sheets("Programming").Range("A" & LR + 1).PasteSpecial Paste:=xlPasteValues
Next
End If
Next
干杯;)