簡體   English   中英

需要幫助使用Excel在Excel中拆分行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM