Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: lhj323323

[已解决]非常感谢zjsxzgx老师,有条件的汇总,求助

[复制链接]
发表于 2010-8-7 09:44 | 显示全部楼层

QUOTE:
以下是引用lhj323323在2010-8-7 9:28:00的发言:

谢谢老师关注:

您写的VB好像与zjsxzgx老师写的VB是不是两种方法?

你们两位的网名上都带了xz,我还以为是同一个人呢,晚上眼睛不好使,没有看清楚区别,不好意思哈


呵呵  不是同一个人
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2010-8-7 09:48 | 显示全部楼层

回复:(zjsxzgx)以下是引用lhj323323在2010-8-7 9:3...

QUOTE:
以下是引用zjsxzgx在2010-8-7 9:43:00的发言:

不是 ,是刚才你在B列最后添加了文字。这样宏会认为最后一行是你写的文字这一行。所以会出现2个或者2个以上的合计

这个我注意了,我刚才问的是

我把您最后一次上传的附件中的VB移置到我的模板内,导出的合计金额仍把F列为零的记录也统计进来了,我对比了一下,我修改的VB与你最后一次上传的VB没有区别呀,请老师帮忙检查一下我的作业是不是改错了

(作业在16楼)
[此贴子已经被作者于2010-8-7 9:48:31编辑过]
回复

使用道具 举报

发表于 2010-8-7 09:57 | 显示全部楼层

Else
            B = B + .Range("b" & x)

这个B的变量是上面的行数啊

这个B 不能用  换一个其他变量

回复

使用道具 举报

 楼主| 发表于 2010-8-7 10:28 | 显示全部楼层

回复:(zjsxzgx)Else     ...

QUOTE:
以下是引用zjsxzgx在2010-8-7 9:57:00的发言:

Else
            B = B + .Range("b" & x)

这个B的变量是上面的行数啊

这个B 不能用  换一个其他变量

UAUs7dwg.rar (18.01 KB, 下载次数: 0)

回复

使用道具 举报

发表于 2010-8-7 10:29 | 显示全部楼层

Private Sub CommandButton2_Click()
    With Sheets("B")
    'B = Range("B65536").End(xlUp).Row
    B = .Range("A65536").End(xlUp).Row
    'For x = 4 To 8
    For x = 2 To 8 '从第2列向右历遍到第8列
     'Cells(B + 1, x) = Application.Sum(Range(Cells(2, x), Cells(B, x)))
     .Cells(B + 1, x) = Application.Sum(.Range(.Cells(3, x), .Cells(B, x)))
    
    Next x
   
    For x = 3 To B '从第3行向下历遍到最末行
        If .Range("F" & x) <> 0 Then  '这个错了,你原来在计算 操作面 的东西了
            K = K + 1
        End If
      
    Next x
    'Stop
    .Range("a" & B - 1) = "合计" '在A列最末行添加汉字“合计”
    .Range("C" & B + 2) = "有金额"
    .Range("D" & B + 2) = B - K - 2 'F列为零的个数
    .Range("C" & B + 3) = "无金额"
    .Range("D" & B + 3) = K 'F列不为零的个数
End With
Sheets("B").Activate
End Sub
[此贴子已经被作者于2010-8-7 10:31:22编辑过]
回复

使用道具 举报

发表于 2010-8-7 10:36 | 显示全部楼层

对了,我在以前修改VBA时忘了删一些东西了。应该以现在的为准

ccpYUlqw.rar (17.21 KB, 下载次数: 1)
回复

使用道具 举报

 楼主| 发表于 2010-8-7 10:43 | 显示全部楼层

QUOTE:
以下是引用zjsxzgx在2010-8-7 10:29:00的发言:
Private Sub CommandButton2_Click()
    With Sheets("B")
    'B = Range("B65536").End(xlUp).Row
    B = .Range("A65536").End(xlUp).Row
    'For x = 4 To 8
    For x = 2 To 8 '从第2列向右历遍到第8列
     'Cells(B + 1, x) = Application.Sum(Range(Cells(2, x), Cells(B, x)))
     .Cells(B + 1, x) = Application.Sum(.Range(.Cells(3, x), .Cells(B, x)))
    
    Next x
   
    For x = 3 To B '从第3行向下历遍到最末行
        If .Range("F" & x) <> 0 Then  '这个错了,你原来在计算 操作面 的东西了
            K = K + 1
        End If
      
    Next x
    'Stop
    .Range("a" & B - 1) = "合计" '在A列最末行添加汉字“合计”
    .Range("C" & B + 2) = "有金额"
    .Range("D" & B + 2) = B - K - 2 'F列为零的个数
    .Range("C" & B + 3) = "无金额"
    .Range("D" & B + 3) = K 'F列不为零的个数
End With
Sheets("B").Activate
End Sub

老师:

按上面这个VB运行的话,表的第18行的合计仍有问题,除了[F18]的统计是正确的外,第18行的其它单元格内的统计都没有考虑F列是否为零。

回复

使用道具 举报

发表于 2010-8-7 10:48 | 显示全部楼层

哦 这个我再看看 ,你的意思是F行为0 的话都不计算?
[此贴子已经被作者于2010-8-7 10:48:50编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-8-7 11:04 | 显示全部楼层

QUOTE:
以下是引用zjsxzgx在2010-8-7 10:48:00的发言:
哦 这个我再看看 ,你的意思是F行为0 的话都不计算?

嗯,

是否是这句需要加个限制?

.Cells(myr + 1, x) = Application.Sum(.Range(.Cells(3, x), .Cells(myr, x)))

加个如果F列为零的话,就不计算对应的其它列的该行数据合计?但我又不会加

回复

使用道具 举报

发表于 2010-8-7 11:09 | 显示全部楼层    本楼为最佳答案   

qe2ROyxh.rar (15.69 KB, 下载次数: 13)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 10:27 , Processed in 0.414510 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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