ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ljpmqb888

想制作能随机生成的试卷。请高手指点!!

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-27 07:38 | 显示全部楼层
本帖最后由 ljpmqb888 于 2015-4-27 07:44 编辑
hhjjpp 发表于 2015-4-26 21:01
df列数字找缺的奥秘解释:
对于上述101所在行,dc7的1111减去101,得1010,即表示所缺的数字为千位的2,十 ...

谢谢!!老师终于又拿下一个山头!!偶尔减号行相邻的问题和估计会很快突破!!我基础差!再学习学习老师的思路!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-27 07:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
偶尔有减号出现不够减和不够5个减号(一般是出现3个了,缺2笔减号)的问题。和减号相邻的问题能一起解决就完美解决减号的问题了。

TA的精华主题

TA的得分主题

发表于 2015-4-27 11:19 | 显示全部楼层
ljpmqb888 发表于 2015-4-27 07:47
偶尔有减号出现不够减和不够5个减号(一般是出现3个了,缺2笔减号)的问题。和减号相邻的问题能一起解决就完 ...

你只要求保证前三够减;偶尔不理想,按提示按F9呀

TA的精华主题

TA的得分主题

发表于 2015-4-27 11:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ljpmqb888 发表于 2015-4-27 07:38
谢谢!!老师终于又拿下一个山头!!偶尔减号行相邻的问题和估计会很快突破!!我基础差!再学习学习老师 ...

你没要求减不邻,你的约束条件太多,相互冲突、顾此失彼,只能去强大的vba转转了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-27 11:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ljpmqb888 于 2015-4-27 11:43 编辑
hhjjpp 发表于 2015-4-27 11:21
你没要求减不邻,你的约束条件太多,相互冲突、顾此失彼,只能去强大的vba转转了!

vba我就更茫然。似乎只能这样解决。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-27 12:56 | 显示全部楼层
虽然目前不是全面解决,但能解决加法混合数位就很不容易,请老师帮我把前10题都处理好,所有的题都不考虑减号。就是第4、5和9.10题也编辑成加法。符合加法的条件即可。不行我可以手工添加减号。这几日辛苦老师了!!再次深表谢意!!老师辛苦您了!!谢谢!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-27 13:02 | 显示全部楼层
vba我手里有一个宏,能够生成随机的5题,前三个是加,后2个是加减混合。你看看能不能有借鉴。
Sub test2()
   
    Dim a, b As Integer
    Dim width As Integer
    Dim length As Integer
    Dim sum1, sum2, sum3, sum4, sum5 As Long
    Dim cou, cou2 As Integer
    Dim neg As Integer
   
   
    sum = 0
    cou2 = 0
   
    Range("a2:e16") = ""
    Range("a18:e18") = ""
    length = Range("i3").Value
    neg = Int(length * 0.4 - 0.01) + 1
    width = Range("g3").Value
    Range("a2").Value = ""
   
    Range("a2").Select
    For i = 1 To length
        b = Int(Rnd() * 9 * 10 ^ (width - 1)) + 1 * 10 ^ (width - 1)
        Selection.Value = b
        sum = sum + b
        Selection.Offset(1, 0).Select
    Next
    sum1 = sum
    Range("g101").Value = sum1
   
    sum = 0
    Range("b2").Select
    For i = 1 To length
        b = Int(Rnd() * 9 * 10 ^ (width - 1)) + 1 * 10 ^ (width - 1)
        Selection.Value = b
        sum = sum + b
        Selection.Offset(1, 0).Select
    Next
    sum2 = sum
    Range("g102").Value = sum2
   
    sum = 0
    Range("c2").Select
    For i = 1 To length
        b = Int(Rnd() * 9 * 10 ^ (width - 1)) + 1 * 10 ^ (width - 1)
        Selection.Value = b
        sum = sum + b
        Selection.Offset(1, 0).Select
    Next
    sum3 = sum
    Range("g103").Value = sum3
   
    sum = 0
    Range("d2").Select
    cou2 = 0
    For i = 1 To length
        b = Int(Rnd() * 9 * 10 ^ (width - 1)) + 1 * 10 ^ (width - 1)
        If (sum - b > 0) And (cou2 < neg) Then
            cou = 0
            For k = 1 To 1000
                ran = Rnd()
                If ran < 0.4 Then cou = cou + 1
            Next k
            If cou < 400 Then
                b = -b
                cou2 = cou2 + 1
            End If
        End If
        Selection.Value = b
        sum = sum + b
        Selection.Offset(1, 0).Select
    Next
    If cou2 < (neg) Then
        For m = 1 To length - 1
            Selection.Offset(-1, 0).Select
            err = Selection.Value
            If (err > 0) And (cou2 < (neg)) And ((sum - 2 * err) > 0) Then
                Selection.Value = -err
                sum = sum - 2 * err
                cou2 = cou2 + 1
            End If
        Next m
    End If
    sum4 = sum
    Range("g104").Value = sum4
   
    sum = 0
    Range("e2").Select
    cou2 = 0
    For i = 1 To length
        b = Int(Rnd() * 9 * 10 ^ (width - 1)) + 1 * 10 ^ (width - 1)
        If (sum - b > 0) And (cou2 < neg) Then
            cou = 0
            For k = 1 To 1000
                ran = Rnd()
                If ran < 0.4 Then cou = cou + 1
            Next k
            If cou < 400 Then
                b = -b
                cou2 = cou2 + 1
            End If
        End If
        Selection.Value = b
        sum = sum + b
        Selection.Offset(1, 0).Select
    Next
    If cou2 < (neg) Then
        For m = 1 To length - 1
            Selection.Offset(-1, 0).Select
            err = Selection.Value
            If (err > 0) And (cou2 < (neg)) And ((sum - 2 * err) > 0) Then
                Selection.Value = -err
                sum = sum - 2 * err
                cou2 = cou2 + 1
            End If
        Next m
    End If
    sum5 = sum
    Range("g105").Value = sum5
End Sub

TA的精华主题

TA的得分主题

发表于 2015-4-28 21:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 hhjjpp 于 2015-5-4 14:41 编辑
ljpmqb888 发表于 2015-4-27 12:56
虽然目前不是全面解决,但能解决加法混合数位就很不容易,请老师帮我把前10题都处理好,所有的题都不考虑减 ...

360截图20150428211949520.jpg

试卷抽样1-h.rar

44.54 KB, 下载次数: 32

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-4-29 08:34 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-30 08:43 | 显示全部楼层
tym1956 发表于 2015-4-29 08:34
什么样式是试卷,好像没搞明白

一楼附件的就是
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 17:25 , Processed in 0.041556 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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