当没有数据重新发送且不input0时,macros循环将数据从表单中拉出

我试图从“订单”中将行15中的行G,H和I的数据向下(在没有数据存在时停止)粘贴到列M,Q和M中的名为“数据” R从第8行往下。

我已经尝试录制一个macros,但是由于这个数据每天都在变化,我logging的macros保持不变,我不知道如何在macros中放置一个IF公式,在原始单元中没有数据时停止它。 有一天数据将从订单中的第15行到第50行,接下来的15到71(总是从15开始)。 当我做200行的macros时,它覆盖了所有的行,不pipe它有多less行,它会在数据表中放置一个零,当没有订单表单元格时。 如果订单表单元格中没有编号,我希望它留空。

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

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

将基本的logging器macros看作一个想法。

提前致谢

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 

这是一种将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 

您可能需要引入variables来保存列索引和行号(如15和8)。 您也可以使范围包含多个列以一次复制更多数据。