Excel中用VBA编的一段小程序:目的是想将时间(B这个column)重复的数据记录求平均,并放入新的工作表中

Sub 按钮1_Click()
Dim i As Integer
Dim n As Integer
Dim Temp_counter As Integer
Dim k As Double
Dim flag As Boolean

Temp_counter = 1
i = n = 2
flag = False

If Worksheets("5号站").Cells(i, 2).Value = Worksheets("5号站").Cells(i + 1, 2).Value Then

Temp_counter = Temp_counter + 1

k = Worksheets("5号站").Cells(i, 2).Value + k

i = i + 1
flag = True

Else

If flag = False Then

Worksheets("5号站新").Cells(n, 2).Value = Worksheets("5号站").Cells(i, 2).Value

i = i + 1

n = n + 1

Else

Worksheets("5号站新").Cells(n, 2).Value = k / Temp_counter
n = n + 1

End If

flag = False

End If

End Sub
一编译就显示If Worksheets("5号站").Cells(i, 2).Value = Worksheets("5号站").Cells(i + 1, 2).Value Then这句有错,请大家帮我指出错误好吗?我等着,谢谢
改成 If Sheets(1).Cells(i, 2) = Sheets(1).Cells(i + 1, 2) Then这样后依然不行。。。依然有错误

这明显是VBA语法错误啊.
i = n = 2
VBA没有这种C语言的赋值方式/
要改成:
i=2
n=2
否则i的值为false,
If Worksheets("5号站").Cells(i, 2).Value = Worksheets("5号站").Cells(i + 1, 2).Value Then这句话自然就有错了追问

那这句话错在哪儿呢?

追答

i等于false的话.
Worksheets("5号站").Cells(i, 2).Value 这取不到值啊,cells(i,2)代表什么?当然就出错啊

追问

真的是这个问题,谢谢您~~~

追答

请采纳,给分,程序没什么问题.语法错了.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-30
你的程序是始终在处理B2,B3,这两个单元格。没有处理整列的数据啊!
每次你i=2, n=2这个语句都会把你的单元格重新返回到B2,B3来计算结果,然后结束运算。
把你的例子贴出来,或者发到[email protected]追问

恩~~我发现了。。。我的代码还没完整。。。谢谢您~~

第2个回答  2011-03-30
请问你的B列是什么东西,没有搞明白你要的是什么结果,能讲清楚一点吗?
方便的话,把文件发[email protected]追问

你好,我发到您邮箱了,麻烦查看一下,谢谢~~

第3个回答  2011-03-30
Worksheets("5号站")改成sheets("5号站")追问

还是不行呀。。。好像不是这个问题~~

追答

有没有“5号站”这个工作表?

追问

有的,“5号站新”也有的,excel是2007版本的

追答

不知2007有没有特殊要求,尽量简化一下试试,这行代码在2003中没问题。
将 "5号站" 改成工作表的序号,不要引号,第一张表是1,第二张是2,试试,后面的.value也省掉。

看一下程序中的这两行代码,能有机会执行吗?
Worksheets("5号站新").Cells(n, 2).Value = k / Temp_counter
n = n + 1

相似回答