【问题标题】:Offset the Copy Row as part of a Loop作为循环的一部分偏移复制行
【发布时间】:2020-05-23 10:58:38
【问题描述】:

我已经编写了以下代码,但我希望宏重复此过程,将下一行复制到 SS21 主表中,直到该行为空白(表格末尾)。

像这样?

   Sub Run_Buysheet()
Sheets("SS21 Master Sheet").Range("A1:AH1, AJ1:AK1, AQ1").Copy Destination:=Sheets("BUYSHEET").Range("A1")

Sheets("SS21 Master Sheet").Range("A2:AH2, AJ2:AK2, AQ2").Copy Destination:=Sheets("BUYSHEET").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)

Dim r As Range, i As Long, ar
Set r = Worksheets("BUYSHEET").Range("AK999999").End(xlUp) 'Range needs to be column with size list
Do While r.Row > 1
    ar = Split(r.Value, "|") '| is the character that separates each size
    If UBound(ar) >= 0 Then r.Value = ar(0)
    For i = UBound(ar) To 1 Step -1
        r.EntireRow.Copy
        r.Offset(1).EntireRow.Insert
        r.Offset(1).Value = ar(i)
    Next
    Set r = r.Offset(-1)
Loop
 End Sub

SS21 主表

购买表

【问题讨论】:

  • 您需要插入一个循环,例如For x = 2 to lastrow 并将 Range("A2:AH2, AJ2:AK2, AQ2") 替换为 Range("Ax:AHx, AJx:AKx, AQx")
  • @GMalc - 抱歉,我是 VBA 新手,您能再解释一下吗?

标签: excel vba loops copy-paste offset


【解决方案1】:

这会扫描 MASTER 表并将行添加到 BUYSHEET 的底部

Sub runBuySheet2()

  Const COL_SIZE As String = "AQ"

  Dim wb As Workbook, wsSource As Worksheet, wsTarget As Worksheet
  Set wb = ThisWorkbook
  Dim iLastRow As Long, iTarget As Long, iRow As Long
  Dim rngSource As Range, ar As Variant, i As Integer

  Set wsSource = wb.Sheets("SS21 Master Sheet")
  Set wsTarget = wb.Sheets("BUYSHEET")

  iLastRow = wsSource.Range("A" & Rows.Count).End(xlUp).Row
  iTarget = wsTarget.Range("AK" & Rows.Count).End(xlUp).Row

  With wsSource
  For iRow = 1 To iLastRow
     Set rngSource = Intersect(.Rows(iRow).EntireRow, .Range("A:AH, AJ:AK, AQ:AQ"))
     If iRow = 1 Then
        rngSource.Copy wsTarget.Range("A1")
        iTarget = iTarget + 1
     Else
       ar = Split(.Range(COL_SIZE & iRow), "|")
       For i = 0 To UBound(ar)
           rngSource.Copy wsTarget.Cells(iTarget, 1)
           wsTarget.Range("AK" & iTarget).Value = ar(i)
           iTarget = iTarget + 1
       Next
     End If
  Next
  MsgBox "Completed"
  End With

End Sub

【讨论】:

  • 这太完美了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 2012-01-07
  • 2015-07-14
  • 2018-05-30
  • 1970-01-01
相关资源
最近更新 更多