如何使用VBA进行公式自动填充?

我想通过VBA实现这个功能,目前A1-A10有数据,B1-B10有公式为B1=A1*2,C1-C10有公式为C1=B1*2,现在如何通过VBA实现,当A11输入数字时,B... 我想通过VBA实现这个功能,目前A1-A10有数据,B1-B10有公式为B1=A1*2,C1-C10有公式为C1=B1*2,现在如何通过VBA实现,当A11输入数字时,B11、C11自动填充公式。不需要把公式写入VBA中,也不需要在excel中开启扩展数据区域格式及公式。 展开
 我来答 举报
boyayes
2019-04-19 · TA获得超过4518个赞
知道大有可为答主
回答量:4231
采纳率:75%
帮助的人:1035万
展开全部

输入完代码后,关闭VB编辑器即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Change(ByVal Target As Range)
    x = Target.Row
    y = Target.Column
    If y = 1 Then
        If Cells(x, y) = "" Then
            Cells(x, y + 1).ClearContents
            Cells(x, y + 2).ClearContents
        ElseIf IsNumeric(Cells(x, y)) = True Then
            Cells(x, y + 1) = Cells(x, y) * 2
            Cells(x, y + 2) = Cells(x, y + 1) * 2
        End If
    End If
End Sub

公式不管写在哪里,总得写出来吧,不然表格怎么知道你要怎么算。改了一下代码,你试试是不是这个效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Worksheet_Change(ByVal Target As Range)
    x = Range("A" & Rows.Count).End(3).Row
    y = Target.Column
    If y = 1 Then
        Dim As Long
        For i = 1 To x
            If Cells(i, y) = "" Then
                Cells(i, y + 1).ClearContents
                Cells(i, y + 2).ClearContents
            ElseIf IsNumeric(Cells(i, y)) = True Then
                Cells(i, y + 1) = Cells(i, y) * 2
                Cells(i, y + 2) = Cells(i, y + 1) * 2
            End If
        Next
    End If
End Sub

嗯试试再说

Zhangweijun189
科技发烧友

2019-04-19 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:3021
采纳率:59%
帮助的人:964万
展开全部
1
2
3
4
5
6
7
8
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row > 10 Then
If IsNumeric(Target) Then
a = Target.Row
Range("B" & a - 1 & ":C" & a - 1).AutoFill Destination:=Range("B" & a - 1 & ":C" & a)
End If
End If
End Sub

109 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
花活管夜山小你6520
2019-04-19 · TA获得超过2308个赞
知道大有可为答主
回答量:4627
采纳率:81%
帮助的人:266万
展开全部
A表数据输入后通过VBA过入到B表,一次有N行,B表中C、E列有公式,公式太复杂,无法通过VBA直接输入,只能填充,如何通过VBA选中B表C-E列的M至M+N行,如何填充公式,因为目前无法确定会使用多少行数据,所以不想预先拉很多行公式。谢谢
Sheets("交易记录列表").Activate
Range(Cells(XE + 1, 9), Cells(XE + H + 1, 17)).Select
Selection.FillDown
在Range前加表格名称会导致错误,所以需先激活目标表格
本回答被网友采纳
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
黑豆2008
2019-04-22 · TA获得超过1880个赞
知道小有建树答主
回答量:2769
采纳率:66%
帮助的人:640万
展开全部

alt+f11打开VBE

双击你的工作表,在右边贴入

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim n
 n = Target.Row
 If Target.Column = 1 Then
    If VBA.IsNumeric(Target.Value) Then
       Range("B" & n).Formula = Replace(Range("B" & n - 1).Formula, "A" & n - 1, "A" & n)
       Range("C" & n).Formula = Replace(Range("C" & n - 1).Formula, "B" & n - 1, "B" & n)
    Else
     MsgBox "输入的不是数字,请重新输入!"
   End If
 End If
End Sub
2 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式