首页 文章

当没有数据重新发送且未输入0时,宏循环将数据从工作表拉到工作表

提问于
浏览
0

我试图从“订单”中获取第15行中的行G,H和I的数据(在没有数据时停止),将其粘贴到M,Q列中的“数据”表中 . R从第8排下来 .

我试过录制一个宏,但是由于这个数据每天都在变化,我的录制宏保持不变,我不知道如何在宏中放置一个IF公式,以便在原始单元格中没有数据时停止它 . 有一天,数据将从订单中的第15行到第50行,接下来的15到71(始终从15开始) . 当我做200行的宏,所以它确实覆盖了所有行,无论它可能有多少行,当订单单元格中没有任何行时,它会在数据表中放置零 . 如果订单单元格中没有数字,我希望它留空 .

例如“订单表”列粘贴到“数据表”(从订单表第15行开始,数据表第8行向下)G到M / H到Q / I到R

例如G15至M8 / H16至Q9 / I17至R10

请参阅基本录像机宏作为一个想法 .

提前致谢

ActiveWindow.SmallScroll Down:=-15
Range("M8").Select
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-6]"
Range("M8").Select
Selection.AutoFill Destination:=Range("M8:M159"), Type:=xlFillDefault
Range("M8:M159").Select
ActiveWindow.SmallScroll Down:=-135
Range("Q8").Select
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]"
Range("Q8").Select
Selection.AutoFill Destination:=Range("Q8:Q159"), Type:=xlFillDefault
Range("Q8:Q159").Select
ActiveWindow.SmallScroll Down:=-132
Range("R8").Select
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]"
Range("R8").Select
Selection.AutoFill Destination:=Range("R8:R159"), Type:=xlFillDefault
Range("R8:R159").Select
ActiveWindow.SmallScroll Down:=-123
Range("I3").Select

1 回答

  • 1

    这是一种将所有值从 G15 向下复制到 M8 的方法

    Dim sourceSht As Worksheet 'sheet you want to copy from 
    Dim targetSht As Worksheet 'sheet you want to copy too
    Dim sourceRng As Range 'what you want to copy
    Dim targetRng As Range 'where you want to copy to
    Dim lastRow As Long 'the last row that holds data
    
    Set sourceSht = Sheets("Order Sheet")
    Set targetSht = Sheets("Data")
    
    With sourceSht
        lastRow = .Cells(.Rows.Count,7).End(xlUp).Row '7 is the column number
    End With
    
    Set sourceRng = sourceSht.Range("G15:G" & lastRow)
    Set targetRng = targetSht.Range("M8").Resize(sourceRng.Rows.Count, 1) ' Range("M8:M"& lastRow - 7) would also be possible
    targetRng.Value = sourceRng.Value
    

    您可能希望引入变量来保存列索引和行号(如15和8) . 您还可以让范围包含多个列,以便一次复制更多数据 .

相关问题