本帖最后由 happym8888 于 2012-1-21 10:56 编辑
不是大师,互相学习吧,看你的代码:
- Sub tt()
- Dim x As Integer, s As Integer
- For x = 2 To 10 Step 1
- For s = 2 To 100 Step 1
- If Sheet("sheet1").Range("a2:a100") <> "" And Sheet("sheet1").Range("b2:b100") <> "" Then
- Range("c" & x) = Evaluate("=MAX((Sheet1!A$2:A$65=A" & x & ")*(Sheet1!B$2:B$57=B" & x & ")*Sheet1!C$2:C$65)")
- ElseIf Sheet("sheet1").Range("a2:a100") = "" And Sheet("sheet1").Range("b2:b100") = "" Then
- Range("c" & x) = ""
- Next x
- Next s
- End If
- End Sub
复制代码
1. 首先,Sheet("sheet1")这种表达方法不对,应该是Sheets("sheet1"),有4处要修改;
2. 其次,下面的Next x和 Next s要互换位置;
3. End IF要挪动到循环语句的里面去,就是放在两个Next的上面一行;
4. Range("a2:a100") <> "" 这个表达方法不对,不等号前面是一个区域,不是一个单元格,试想一下,要是这个区域里面有的是空、有的有数据,这个不等号到底成立不成立呢?再说,你的循环变量s怎么没有派上用处啊?猜想一下估计把Range("a2:a100") 改成Range("a" & s) 会符合你的本意;
5. =MAX((Sheet1!A$2:A$65=A" & x & ")*(Sheet1!B$2:B$57=B" & x & ")*Sheet1!C$2:C$65)这段代码不怎么看得懂,单元格区域等于某一单元格、然后还有单元格区域相乘,以前没见过,但是用EXCEL试着等一等、乘一乘还真是没出错,很奇怪,看来这段代码的精华就在这里了;
6. 看来你是初次编程序,所以有些语法结构不清楚,但是看你的精华代码、可能和行列式、高次阶乘有关,估计你是个纯数学专家,上手应该很快,假以时日,你必定成为一代代码高手,到时一定向你请教。