Office中国论坛/Access中国论坛

标题: [急]请教一个EXCEL的问题,如何实现自动往下复制公式? [打印本页]

作者: 竹笛    时间: 2003-2-22 17:22
标题: [急]请教一个EXCEL的问题,如何实现自动往下复制公式?
EXCEL论坛没人回应,只好在此求助了,谢谢!

'问题:不指定l,m参数,如何实现自动往下复制公式?
Sub aaaa()
Dim i As Integer
Dim j As Integer
Dim l As Integer
Dim m As Integer
l = 10
m = 15
i = 4
j = 10
Range("C" & j & "").Select
Cells(10, 3).Formula = "=sum(B" & i & ":" & "B" & j & ")/7"
Selection.AutoFill Destination:=Range("C" & l & " : C" & m & "")

'已在cells(10,3)单元格中得到公式=sum(B4:B10)/7
'现在我想自动复制公式到本列以下的单元格
'(如:cells(11,3)、cells(12,3) ……中得到公式)
End Sub

[em26]文件下载
作者: huanghai    时间: 2003-2-22 17:38
我不会,但是我知道这里一定有人会改:
http://club.excelhome.net/index.asp
作者: Roadbeg    时间: 2003-2-22 17:39
笛子的意思可是:
l,m 是变量,且在编写程序时无法得知?
那么.焦点在于,如何动态的得知  m 的值.
如果是这样的话,可以做一个函数对 b列自上而下进行遍历,当B列出现无效值(为空)时,此时
的单元格为有效数据列的最低端,由此而知 m 的值,则 l=m-6.问题解决.
作者: 竹笛    时间: 2003-2-22 17:52
谢谢楼上兄弟:

说明:不是,l与m参数可以获得,但我现在需要的是在代码中不使用l,m参数来自动向下复制公式。
作者: Roadbeg    时间: 2003-2-22 17:55
复制应该有限制吧?比如复制到某一个单元格为止.
作者: 竹笛    时间: 2003-2-22 17:57
对,就象用鼠标双击右下角“+”一样。限制条件是左边的单元格到的位置。
作者: Roadbeg    时间: 2003-2-22 18:15
既然是可知的,何必不用.
作者: 竹笛    时间: 2003-2-22 18:25
是的,但是我必须写一段代码来给l,m确定值,因为我的记录数是一天一变。

其实,说白了,是想知道是否还有更为精炼的解决之道?谢谢Roadbeg兄。
作者: Roadbeg    时间: 2003-2-22 18:38
精益求精,竹笛兄的精神令人佩服.
这使我想起了以前看到的一个经典例子:
如何不用第三个变量,交换两个变量的值?
解法非常精彩,不知各位高手可有兴趣解一解此题?
作者: 竹笛    时间: 2003-2-22 19:06
估计是精炼的解决之道,但还不是我最满意的:
Sub aaaa()
Dim i As Integer '确定行号
Dim l As Integer '确定行记录数
Dim n As Integer 'n天移动平均产量
n = Cells(3, 7) '确定几天的移动平均产量
i = n + 1 '确定第一个要写入公式的单元格
l = Cells(4, 7) '确定行记录数

Range("C" & i & "").Select
Cells(n + 1, 3).Formula = "=sum(B2:" & "B" & i & ")/" & n & ""
Selection.AutoFill Destination:=Range("C" & i & " : C" & l & "")
End Sub


[em26]文件下载
作者: huanghai    时间: 2003-2-22 19:22
我这里面有一段代码,我一直在用的:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim row1, con1 As Integer

    row1 = Target.Row
    con1 = Target.Column
   
    If con1 = 3 And Cells(row1, 3) <> "" Then
        Cells(row1, 2) = row1 - 2
    End If
   
    If con1 = 5 Or con1 = 6 Then
        Cells(row1, 7).Formula = "=SUM($E$3:E" & row1 & ")-SUM($F$3:F" & row1 & ")"
    End If
   
    Application.EnableEvents = True
End Sub



作者: huanghai    时间: 2003-2-22 19:32
标题: 帖上我的例子
文件下载
作者: huanghai    时间: 2003-2-22 19:34
序号和余额可以自动填写,就是使用代码了自动复制公式的功能。
作者: Roadbeg    时间: 2003-2-22 19:42
方法应该只有这样了,但我觉得,把 已定参数l 的公式写在代码中应该更好.
至于 n天移动平均的 n 如果是固定的,也就不用设置为可变的了.
作者: 竹笛    时间: 2003-2-22 19:53
n是变动的。
作者: Roadbeg    时间: 2003-2-22 19:58
竹笛今天帖数到 9.11 了,有没有什么事要发生啊?  :-)
作者: yorkjun    时间: 2003-2-24 00:06
以下是引用Roadbeg在2003-2-22 10:38:28的发言:
精益求精,竹笛兄的精神令人佩服.
这使我想起了以前看到的一个经典例子:
如何不用第三个变量,交换两个变量的值?
解法非常精彩,不知各位高手可有兴趣解一解此题?


简单,我想了2分钟:
      a=3
      b=4
   
      a=a+b     'a=7

      b=a-b     'b=3

      a=a-b     'a=4


作者: Roadbeg    时间: 2003-3-1 22:54
这个问题其实是很简单,不过很多少没这样去想,
因为现在根本没机会使用!!!

但这个问题是在 8088,8086 时代以前出现的(8088 早于 8086 早于 80286)
那时内存太紧张了,以至于一个变量的存储空间也不能多用.!!!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3