Excel精英培训网

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

[已解决]我想进行一组连续变量的统计,不知Excel能否实现,问题有点复习,请看附件

[复制链接]
 楼主| 发表于 2016-1-13 12:23 | 显示全部楼层
grf1973 发表于 2016-1-13 11:33
按规则重新设计了一下算法。唯一有问题是原数字中绿色单元格R26 为什么是8a,而不是7a

R26 哪应是9a,是前面8a中202中的哪个0要加1,即出现一个1或0就转变就加1,人工结果原来是错的,现在我已改正见附件。

连4以上减5结果分开列模拟l回11.zip

57.69 KB, 下载次数: 3

回复

使用道具 举报

发表于 2016-1-13 13:24 | 显示全部楼层
V25是8a是对的,但R26是9a仍有问题。我的做法是当前位向右找0或1,忽略2,找齐三位,如果是010或101就加1。R24向后找的结果是1(R24)、0(V24)、0(X24),不满足加1的条件,所以仍为8a。如果这算法不对,那就没办法了,其他的也会有影响。
回复

使用道具 举报

 楼主| 发表于 2016-1-13 15:13 | 显示全部楼层
grf1973 发表于 2016-1-13 13:24
V25是8a是对的,但R26是9a仍有问题。我的做法是当前位向右找0或1,忽略2,找齐三位,如果是010或101就加1。 ...

老师您好:但您以前帮我做的哪些都可以的啊,加1都是同样规则的啊,如实在不行,哪就先这样帮我做一个完整的吧。
回复

使用道具 举报

发表于 2016-1-14 16:14 | 显示全部楼层
告一段落吧,实在折腾够呛。

连4以上减5结果分开.rar

28.26 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2016-1-15 09:45 | 显示全部楼层
grf1973 发表于 2016-1-14 16:14
告一段落吧,实在折腾够呛。

非常感谢!
回复

使用道具 举报

 楼主| 发表于 2016-1-18 09:06 | 显示全部楼层
grf1973 发表于 2016-1-14 16:14
告一段落吧,实在折腾够呛。

老师您好:看来还要劳烦您一下,就是想您帮我将原来你帮我写的遇1加1的哪个VBA改一下,改为不向负数记录,最小就记为0即可。谢谢!

Sub 遇1加1遇0减1()      
    rmax = Cells(65536, 3).End(3).Row + 1
    cmax = ActiveSheet.UsedRange.Columns.Count    '最大列
    arr = Range([c3], Cells(rmax, cmax))
    For i = 1 To UBound(arr) - 1 Step 3
        S = 0
        For j = 1 To UBound(arr, 2)          '清空答案区
            arr(i + 1, j) = ""
        Next
        For j = UBound(arr, 2) To 1 Step -1
            x = arr(i, j)
            If Len(x) Then
                If x = 1 Then
                    S = S + 1
                    arr(i + 1, j) = S
                ElseIf x = 0 Then
                    S = S - 1
                    arr(i + 1, j) = S
                End If
            End If
        Next
    Next
    [c3].Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub

回复

使用道具 举报

发表于 2016-1-18 09:32 | 显示全部楼层
把S=S-1改为S=iif(S>0,S-1,S)   即可
回复

使用道具 举报

 楼主| 发表于 2016-1-18 10:42 | 显示全部楼层
grf1973 发表于 2016-1-18 09:32
把S=S-1改为S=iif(S>0,S-1,S)   即可

谢谢!是了,想再请教下,假如我想将隔2行一组改为隔1行一组又如何改呢?清空哪里又应跟着如何改呢?
回复

使用道具 举报

发表于 2016-1-18 11:25 | 显示全部楼层
代码里的变量i控制的是行数,i+1就是当前行的下一行。
把  For i = 1 To UBound(arr) - 1 Step 3
改成  For i = 1 To UBound(arr) - 1 Step 2  就是每两行为一个单元(隔一行为一组)
清空的代码不用改。
回复

使用道具 举报

 楼主| 发表于 2016-1-27 10:18 | 显示全部楼层
grf1973 发表于 2016-1-14 16:14
告一段落吧,实在折腾够呛。

老师您好:不好意思,又来烦您了,没办法,我发了张帖几天了,也没有人能帮我做,只好再请您出手了,我想要的东西只要在您最后给我做的哪个连4减5的表格的基础上改改就行,现我已把要求简化了,现要求只统计“0”,且不会再有“2”出现,不知您可否抽点时间成全我,谢谢!

0的统计.zip

38.45 KB, 下载次数: 3

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 08:48 , Processed in 0.376233 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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