Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1487|回复: 7

[已解决]老师,这能用VBA作出吗?

[复制链接]
发表于 2012-7-25 11:40 | 显示全部楼层 |阅读模式
用VBA作出累计?                          
最佳答案
2012-7-25 14:49
本帖最后由 gdsgzhrsh 于 2012-7-25 15:01 编辑

Sub 本月()
Dim aa%, HH$, BB%
For aa = 10 To 54 Step 4
  BB = aa + 2
  HH = aa + 3
If Sheets("sheet3").Range("E" & aa) <> "" Then
Range("d" & aa) = "本月"
Sheets("sheet3").Range("E" & BB) = Sheets("sheet3").Range("E" & aa)
Sheets("sheet3").Range("E" & HH) = Sheets("sheet3").Range("E" & BB) + Sheets("sheet3").Range("E" & BB)
Rows(aa).Select
Range("e" & aa) = ""

End If
Next
End Sub
这个可以调试出来,但是你的算法是不是有问题?
最好提供个你实际的表格吧方便调试,你这个数据不全

book1.rar

6.07 KB, 下载次数: 31

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-7-25 12:35 | 显示全部楼层
回复

使用道具 举报

发表于 2012-7-25 12:53 | 显示全部楼层
1+2=3,3+6=9,9+5=14...别的看不出来啥了,想要达到什么效果呢?能否语言描述下{:041:}
回复

使用道具 举报

 楼主| 发表于 2012-7-25 13:30 | 显示全部楼层
gdsgzhrsh 发表于 2012-7-25 12:35
你想做什么?没搞明白


'我想要如果E10不等于""e13=e10,e14<>"",e17=e13+e14,e18<>"",E21=E18+E17,E22<>"",E25=E22+E21依次循环到E57
'下面写的不能用?帮我改改
sub 本月()
Dim aa%, HH$, BB%
For aa = 10 To 54 Step 4
  BB = aa + 2
  HH = aa + 3
If Sheets("sheet3").Range("E" & aa) <> "" Then
Range("d" & aa) = "本月"
Sheets("sheet3").Range("E" & BB) = Sheets("sheet3").Range("E" & aa)
Sheets("sheet3").Range("E" & HH) = Sheets("sheet3").Range("E" & BB ) + Sheets("sheet3").Range("E" & BB )
Rows(aa).Select
Range("e" & aa) = ""
end sub
回复

使用道具 举报

发表于 2012-7-25 14:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 gdsgzhrsh 于 2012-7-25 15:01 编辑

Sub 本月()
Dim aa%, HH$, BB%
For aa = 10 To 54 Step 4
  BB = aa + 2
  HH = aa + 3
If Sheets("sheet3").Range("E" & aa) <> "" Then
Range("d" & aa) = "本月"
Sheets("sheet3").Range("E" & BB) = Sheets("sheet3").Range("E" & aa)
Sheets("sheet3").Range("E" & HH) = Sheets("sheet3").Range("E" & BB) + Sheets("sheet3").Range("E" & BB)
Rows(aa).Select
Range("e" & aa) = ""

End If
Next
End Sub
这个可以调试出来,但是你的算法是不是有问题?
最好提供个你实际的表格吧方便调试,你这个数据不全
回复

使用道具 举报

 楼主| 发表于 2012-7-25 15:51 | 显示全部楼层
gdsgzhrsh 发表于 2012-7-25 14:49
Sub 本月()
Dim aa%, HH$, BB%
For aa = 10 To 54 Step 4

‘老师你好!帮我把这代码改到模块中
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim I As Long

  On Error Resume Next

  With Target.Parent
    If Target.Cells.Count = 1 Then
      If Target.Column = 5 And Target.Row = 10 Then
        Application.EnableEvents = False
        I = 17
        .Cells(13, 5) = Target.Value
        Do While I <= 57
          If Len(.Cells(I - 3, 5).Value) Then
            If IsNumeric(.Cells(I - 3, 5).Value) Then
              .Cells(I, 5).Value = .Cells(I - 3, 5).Value + .Cells(I - 4, 5).Value
            End If
          End If
          I = I + 4
        Loop
        Application.EnableEvents = True
      End If
    End If
  End With
End Sub

回复

使用道具 举报

发表于 2012-7-25 16:02 | 显示全部楼层
这是个事件来的,当选取的单元格发生变化时触发该事件,Target参数是选取的单元格,不好改成模块内的sub,你写清楚你的需求,说不定写出来的程序更简单
回复

使用道具 举报

 楼主| 发表于 2012-7-25 16:10 | 显示全部楼层
gdsgzhrsh 发表于 2012-7-25 16:02
这是个事件来的,当选取的单元格发生变化时触发该事件,Target参数是选取的单元格,不好改成模块内的sub,你 ...

放到SHEET事件中就是我想的哪样
我想在模块中调用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-18 20:45 , Processed in 0.321525 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表