Excel精英培训网

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

[已解决]求高手帮忙

[复制链接]
发表于 2013-12-10 14:50 | 显示全部楼层 |阅读模式
10学分
本帖最后由 196391689 于 2013-12-11 19:50 编辑

在现有的基础上增加一个按钮使现在的答案自动汇总到旁边的表中
最佳答案
2013-12-10 14:50
本帖最后由 爱疯 于 2013-12-11 16:38 编辑

Sub Total()
    Dim A, B, i%, j%
    With Sheet2
        .Range("f4:g38").ClearContents
        A = .Range("A1:a" & .Cells(.Rows.Count, 1).End(3).Row)
        B = .Range("E2:G38")
        For i = 3 To UBound(B)
            If B(i, 1) <> "" Then
                For j = 2 To UBound(A)
                    If InStr(A(j, 1), B(i, 1)) Then
                        If InStr(A(j, 1), "Dr") Then B(i, 2) = B(i, 2) + GetNumber(A(j, 1))
                        If InStr(A(j, 1), "Cr") Then B(i, 3) = B(i, 3) + GetNumber(A(j, 1))
                    End If
                Next j
            End If
        Next i
        .Range("e2").Resize(UBound(B), UBound(B, 2)) = B
    End With
End Sub

Function GetNumber(s) As Long
    Dim i%, n%
    n = Len(s)
    For i = n To 1 Step -1
        If VBA.IsNumeric(Mid(s, i, n)) Then GetNumber = Mid(s, i, n) Else Exit For
    Next i
End Function
555f.rar (42.73 KB, 下载次数: 12)

555.rar

15.79 KB, 下载次数: 16

最佳答案

查看完整内容

Sub Total() Dim A, B, i%, j% With Sheet2 .Range("f4:g38").ClearContents A = .Range("A1:a" & .Cells(.Rows.Count, 1).End(3).Row) B = .Range("E2:G38") For i = 3 To UBound(B) If B(i, 1) "" Then For j = 2 To UBound(A) If InStr(A(j, 1), B(i, 1)) Then If InStr(A(j, 1), "Dr") Then B(i ...
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-10 14:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 爱疯 于 2013-12-11 16:38 编辑

Sub Total()
    Dim A, B, i%, j%
    With Sheet2
        .Range("f4:g38").ClearContents
        A = .Range("A1:a" & .Cells(.Rows.Count, 1).End(3).Row)
        B = .Range("E2:G38")
        For i = 3 To UBound(B)
            If B(i, 1) <> "" Then
                For j = 2 To UBound(A)
                    If InStr(A(j, 1), B(i, 1)) Then
                        If InStr(A(j, 1), "Dr") Then B(i, 2) = B(i, 2) + GetNumber(A(j, 1))
                        If InStr(A(j, 1), "Cr") Then B(i, 3) = B(i, 3) + GetNumber(A(j, 1))
                    End If
                Next j
            End If
        Next i
        .Range("e2").Resize(UBound(B), UBound(B, 2)) = B
    End With
End Sub

Function GetNumber(s) As Long
    Dim i%, n%
    n = Len(s)
    For i = n To 1 Step -1
        If VBA.IsNumeric(Mid(s, i, n)) Then GetNumber = Mid(s, i, n) Else Exit For
    Next i
End Function
555f.rar (42.73 KB, 下载次数: 12)

评分

参与人数 1 +3 收起 理由
196391689 + 3 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2013-12-10 18:28 | 显示全部楼层
希望你能说的明确一些,因为你只说汇总到旁边,但是我看了数据完全不知道该把数字如何汇总,加和?还是取平均还是怎么样你完全不说明的话很难理解
回复

使用道具 举报

 楼主| 发表于 2013-12-10 18:58 | 显示全部楼层
比如DR 银行存款到 表表格中的 银行存款 DR 里面 如果有两个 DR 银行存款则数字相加
由于题和答案都是随机出的希望表框里的答案也是随机的
回复

使用道具 举报

发表于 2013-12-11 11:29 | 显示全部楼层
555d.rar (15.21 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2013-12-11 12:32 | 显示全部楼层
感谢爱疯老师在百忙中查看我的帖子,这个楼的附件是我想要第三个按钮做的事情
我把内容手动输入到表格中了,请爱疯老师帮忙看一下。

555d.rar

18.37 KB, 下载次数: 2

回复

使用道具 举报

 楼主| 发表于 2013-12-11 12:45 | 显示全部楼层
24.用银行存款支付社会捐赠2000元
Dr:营业外支出2000
Cr:银行存款2000
比如这道题我想点击第三个按钮则在表中出现
QQ图片20131211124238.jpg
QQ图片20131211124116.jpg
回复

使用道具 举报

 楼主| 发表于 2013-12-11 16:49 | 显示全部楼层
爱疯 发表于 2013-12-11 16:35
Sub Total()
    Dim A, B, i%, j%
    With Sheet2

爱疯老师,G21那个单元格好像还有点小问题,那个单元格不显示数字,请您帮忙再改进一下呗
回复

使用道具 举报

发表于 2013-12-11 17:27 来自手机 | 显示全部楼层
196391689 发表于 2013-12-11 16:49
爱疯老师,G21那个单元格好像还有点小问题,那个单元格不显示数字,请您帮忙再改进一下呗

g21的值来自哪几个单元格?我现在不在
回复

使用道具 举报

 楼主| 发表于 2013-12-11 17:40 | 显示全部楼层
爱疯 发表于 2013-12-11 17:27
g21的值来自哪几个单元格?我现在不在

爱疯老师 只有 SHEET1的 A6单元格
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 23:20 , Processed in 0.920904 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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