如何使用VBA在Excel中自动填充单元格?

时间:2010-02-18 14:20:56

标签: excel excel-vba vba

我在第一列中有一些数据,之后有一些计算字段,我想用第一行中的相同规则自动填充其余行。

输入/计算数据的总行数,列数是已知的,我将非常感谢这个数据的工作示例:

  |  A  |  B  |    C   |    D   |      E     |
----------------------------------------------
1 |  3  |  1  | =A1+B1 | =A1*B1 | =sum(C1:D1)|
2 |  4  |  4  |        |        |            |
3 |  5  | 23  |        |        |            |
4 | 42  |  4  |        |        |            |
5 |  7  |  4  |        |        |            |

实际数据通常有10K +行和30+列。当我尝试手动执行此操作时有时会收到错误Selection is too large。我告诉这个,因为通用解决方案也可能无法使用VBA,但如果我知道如何自动填充此示例,我会在必要时按列进行。 Excel的版本是2000,这不是我的错::)

4 个答案:

答案 0 :(得分:6)

sub copydown()
    Range("c1:e" & Range("a" & activesheet.rows.count).End(xlUp).Row).FillDown
end sub

答案 1 :(得分:1)

基本的,但它应该给你一些可以构建的东西,它可以在Excel 2003(我拥有的最老的)中运行。

Option Explicit

Public Sub CopyFormulaeExample()

    On Error GoTo Handle_Exception

    Dim lastRow As Long
    Dim wrkSheet As Excel.Worksheet

    'Book and sheet names hard-coded for this example
    Set wrkSheet = Application.Workbooks("Book1").Worksheets("Sheet1")

    'Get the index of the last row used
    lastRow = wrkSheet.UsedRange.End(xlDown).Row

    'Copy the cells containing the formulae; also hard-coded for this example
    Range("C1:E1").Select
    Selection.Copy
    'Paste the selection to the range of interest
    Range("C2:E" + CStr(lastRow)).PasteSpecial xlPasteAll

    'Alternative approach
    Range("C1:E1").Copy Range("C2:E" + CStr(lastRow))

    'Release memory and exit method
    Set wrkSheet = Nothing
    Exit Sub

Handle_Exception:

    Set wrkSheet = Nothing
    MsgBox "An error has been found: " + Err.Description

End Sub

答案 2 :(得分:1)

使用向下复制(ctrl-D)功能。

选择单元格c1-e1然后一直向下(如果有10,000行数据,则所选单元格区域为c1-e10000)。

按Ctrl-D。

将单元格内容(您的公式)复制到其下面的所有单元格中。

http://www.google.com/search?q=using+excel+ctrl-d

答案 3 :(得分:-2)

以下是我这样做的,当我这样做时:)

Ctrl+C
<--
Ctrl+Shift+Down
-->
Ctrl+Shift+Up
Ctrl+V

在我看来,这是最有效的方式。没有什么可以阻止您将其包装到宏中并指定方便的键绑定。