Excel精英培训网

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

[已解决]求出代表的数字

[复制链接]
发表于 2016-3-25 16:44 | 显示全部楼层 |阅读模式
本帖最后由 excelpxfans001 于 2016-3-25 22:08 编辑

求出代表的数字
最佳答案
2016-3-25 22:00
Sub test()
    Dim A(9), B(), rng As Range, i
    Set rng = Selection
    [z1:z5].ClearContents
    If rng.Count = 1 Then
        If Len(rng) Then
            If rng >= 0 And rng <= 9 Then

                A(0) = Array(2, 3, 5, 8, 9)
                A(1) = Array(2, 3, 5, 7)
                A(2) = Array(2, 3, 5, 8, 9)
                A(3) = Array(1, 3, 4, 6, 8)
                A(4) = Array(2, 3, 5, 6)
                A(5) = Array(0, 3, 4, 8, 9)
                A(6) = Array(3, 4, 6, 7, 8)
                A(7) = Array(4, 5, 6, 7, 8)
                A(8) = Array(5, 6, 7, 8, 9)
                A(9) = Array(5, 6, 7, 8, 9)

                B = A(rng)
                ReDim B(1 To UBound(B) + 1, 1 To 1)
                For i = 1 To UBound(B)
                    B(i, 1) = A(rng)(i - 1)
                Next i
                [z1].Resize(UBound(B)) = B

            End If
        End If
    End If
End Sub

(, 下载次数: 6)

趣味.rar

6.99 KB, 下载次数: 8

发表于 2016-3-25 16:51 | 显示全部楼层
QQ截图20160325164237.jpg


X8单元格里,是不是说错了?先在代码中设定

是不是,先在单元格中设定


回复

使用道具 举报

 楼主| 发表于 2016-3-25 17:03 | 显示全部楼层
爱疯 发表于 2016-3-25 16:51
X8单元格里,是不是说错了?先在代码中设定

是不是,先在单元格中设定

在代码中设定好先,附件是为了说明。
回复

使用道具 举报

发表于 2016-3-25 17:03 | 显示全部楼层
excelpxfans001 发表于 2016-3-25 17:03
在代码中设定好先,附件是为了说明。

在代码中设定好先,这句话是什么意思?
回复

使用道具 举报

 楼主| 发表于 2016-3-25 17:28 | 显示全部楼层
爱疯 发表于 2016-3-25 17:03
在代码中设定好先,这句话是什么意思?

黄色的数据放在代码里
回复

使用道具 举报

发表于 2016-3-25 17:37 来自手机 | 显示全部楼层
放在代码里,没有放在单元格里方便(修改)。黄色的数据相当于一组初值,是吗?
还是一组由其它程序返回的中间结果?
回复

使用道具 举报

 楼主| 发表于 2016-3-25 17:50 | 显示全部楼层
爱疯 发表于 2016-3-25 17:37
放在代码里,没有放在单元格里方便(修改)。黄色的数据相当于一组初值,是吗?
还是一组由其它程序返回的 ...

是固定的数值。要放在代码里。放在表格里不方便 。
回复

使用道具 举报

发表于 2016-3-25 19:10 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim A(9), B(), i

    [z1:z5].ClearContents
    If Target.Column > 6 And Target.Column < [w1].Column And Target <> "" Then
        A(0) = Array(2, 3, 5, 8, 9)
        A(1) = Array(2, 3, 5, 7)
        A(2) = Array(2, 3, 5, 8, 9)
        A(3) = Array(1, 3, 4, 6, 8)
        A(4) = Array(2, 3, 5, 6)
        A(5) = Array(0, 3, 4, 8, 9)
        A(6) = Array(3, 4, 6, 7, 8)
        A(7) = Array(4, 5, 6, 7, 8)
        A(8) = Array(5, 6, 7, 8, 9)
        A(9) = Array(5, 6, 7, 8, 9)

        B = A(Target)
        ReDim B(1 To UBound(B) + 1, 1 To 1)
        For i = 1 To UBound(B)
            B(i, 1) = A(Target)(i - 1)
        Next i
        [z1].Resize(UBound(B)) = B
    End If
End Sub

趣味2.rar (15.08 KB, 下载次数: 6)
回复

使用道具 举报

发表于 2016-3-25 19:47 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim A
    [z1:z5].ClearContents
    If Target.Count = 1 Then
        If Target.Column > 6 And Target.Column < [w1].Column And Target <> "" Then
            A = [{2,2,2,1,2,0,3,4,5,5;3,3,3,3,3,3,4,5,6,6;5,5,5,4,5,4,6,6,7,7;8,7,8,6,6,8,7,7,8,8;9,"",9,8,"",9,8,8,9,9}]
            [z1:z5] = Application.Index(A, 0, Target + 1)
        End If
    End If
End Sub



A创建了5行10列:
第1列5个元素从上到下是 2,3,5,8,9
第2列5个元素从上到下是 2,3,5,7
...
回复

使用道具 举报

 楼主| 发表于 2016-3-25 20:46 | 显示全部楼层
本帖最后由 excelpxfans001 于 2016-3-25 20:49 编辑
爱疯 发表于 2016-3-25 19:10
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim A(9), B(), i

看了代码,没看懂。
可否代码修改成不自动的。也就是选取单元格后,运行代码,再求出数字。
选取的数据区域也会有增加的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 09:40 , Processed in 0.440163 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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