每个工作表中单元格的填充列值

时间:2018-11-15 15:28:23

标签: excel vba copying

我想做的是从特定单元格中获取值,并将其设置为填充列。我有多个具有不同值的工作表。

此代码可以在一个工作表上正常工作:

Sub Formatting_one()

   Range("A12").Value = Range("M6").Value
   Range("A12:A" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

End Sub

然后,我开始尝试相同的操作,但要遍历工作表。这就是我坚持的观点。这是我的代码:

Sub Formatting_many()

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.[A1].Resize(, 6).EntireColumn.Insert

        ws.Range("A12").Value = ws.Range("M6").Value
        ws.Range("A12:A" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("B12").Value = ws.Range("M7").Value
        ws.Range("B12:B" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("C12").Value = ws.Range("M8").Value
        ws.Range("C12:C" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("D12").Value = ws.Range("I5").Value
        ws.Range("D12:D" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("E12").Value = ws.Range("I4").Value
        ws.Range("E12:E" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("F12").Value = ws.Range("I6").Value
        ws.Range("F12:F" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("G12").Value = ws.Range("I7").Value
        ws.Range("G12:G" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

    Next ws

End Sub

我一步一步地进行了操作,结果是该单元格被复制到填充范围单元格的第一个单元格中,但随后被删除。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

问题...

…是您在G列中查找最后使用的行

Cells(Rows.Count, 7).End(xlUp).Row

但是由于您在ws.[A1].Resize(, 6).EntireColumn.Insert中添加了6列,因此G列现在为空,因此最后使用的行是1

您实际上已经运行

ws.Range("A12:A1").FillDown

这将从A1中取出一个空单元格,并将其填充到A12(因此您在A12中插入的值将被删除)。


解决方案

在插入原始列G之后,将其移动到

ws.Cells(ws.Rows.Count, 7 + 6).End(xlUp).Row