[英]Need help splitting rows in Excel with Macro
我有一张要尝试采用特定格式的表格。 目前,我的订单项都在同一行上。 这是当前版本与我在不同工作表上显示的方式-https: //docs.google.com/spreadsheets/d/1CH_zI6Waky0YCcArCvjAa4x3YbEt8rMEbybZRI-dOoc/edit#gid=0
我的代码存在的问题是,每个广告组总共创建了9行。 每个广告组只能包含3行。
Sub SplitAds()
Dim thissheet As Worksheet
Set thissheet = ActiveSheet
Sheets.Add
Dim newsheet As Worksheet
Set newsheet = ActiveSheet
'Copy Headers
thissheet.Range("A1").EntireRow.Copy
newsheet.Range("A1").PasteSpecial (xlPasteValues)
Dim newrow As Long
For x = 0 To thissheet.Range("A65535").End(xlUp).Row
thissheet.Range("A2:C2").Offset(x, 0).Copy
'Copy & Paste A:C
newsheet.Range("A2").Offset(newrow, 0).PasteSpecial (xlPasteValues)
newsheet.Range("A2").Offset(newrow + 1, 0).PasteSpecial (xlPasteValues)
newsheet.Range("A2").Offset(newrow + 2, 0).PasteSpecial (xlPasteValues)
'Set Type
newsheet.Range("L2").Offset(newrow, 0).Value = thissheet.Range("L2").Offset(x, 0).Value
newsheet.Range("L2").Offset(newrow + 1, 0).Value = thissheet.Range("L2").Offset(x, 0).Value
newsheet.Range("L2").Offset(newrow + 2, 0).Value = thissheet.Range("L2").Offset(x, 0).Value
'Set D:J on 2nd
thissheet.Range("D2:J2").Offset(x, 0).Copy
newsheet.Range("D2").Offset(newrow + 1, 0).PasteSpecial (xlPasteValues)
'Set Keyword on 3rd
newsheet.Range("K2").Offset(newrow + 2, 0).Value = thissheet.Range("K2").Offset(x, 0).Value
newrow = newrow + 3
Next
End Sub
将不胜感激任何帮助。 谢谢!
我觉得你的问题是你在一个时间递增的一列,而你的newrow
在时间递增三人。 结果,您将为每一行创建三行。
您可以通过在for
循环中执行step 3
来解决此问题,或者将for
更改for
while
,然后手动将其递增三,方法与newrows
:
Sub SplitAds()
Dim thissheet, newsheet As Worksheet
Set thissheet = ActiveSheet
Set newsheet = Sheets.Add
Dim x, maxRow, newrow As Long
'Copy Headers
thissheet.Range("A1").EntireRow.Copy
newsheet.Range("A1").PasteSpecial (xlPasteValues)
maxRow = thissheet.Range("A65535").End(xlUp).Row - 1
While x < maxRow
thissheet.Range("A2:C2").Offset(x, 0).Copy
'Copy & Paste A:C
newsheet.Range("A2").Offset(newrow, 0).PasteSpecial (xlPasteValues)
newsheet.Range("A2").Offset(newrow + 1, 0).PasteSpecial (xlPasteValues)
newsheet.Range("A2").Offset(newrow + 2, 0).PasteSpecial (xlPasteValues)
'Set Type
newsheet.Range("L2").Offset(newrow, 0).Value = thissheet.Range("L2").Offset(x, 0).Value
newsheet.Range("L2").Offset(newrow + 1, 0).Value = thissheet.Range("L2").Offset(x, 0).Value
newsheet.Range("L2").Offset(newrow + 2, 0).Value = thissheet.Range("L2").Offset(x, 0).Value
'Set D:J on 2nd
thissheet.Range("D2:J2").Offset(x, 0).Copy
newsheet.Range("D2").Offset(newrow + 1, 0).PasteSpecial (xlPasteValues)
'Set Keyword on 3rd
newsheet.Range("K2").Offset(newrow + 2, 0).Value = thissheet.Range("K2").Offset(x, 0).Value
x = x + 3
newrow = newrow + 3
Wend
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.