EXCEL通过VBA生成小学生混合加减法数学题

2020年2月29日 | 分类: VB | 标签: ,

孩子荣升小学,数学题目也学习到20以内混合加减法,为了孩子能熟练掌握数学基础运算,给孩子每日练习100道算数题目。

网上有用 randbetween 函数来实现的,如下面的链接内的方法:
https://jingyan.baidu.com/article/f3ad7d0f5178bf09c3345b32.html

这个方法在OFFICE中好像有点问题,按F9无法刷新随机数据。因此为了更友好(家人对ECXEL并不熟悉)的实现功能,采用VBA的方式来实现。最终效果如下图所示。

最终效果

实现算法也比较简单,见VBA代码。

Dim MinNum As Integer
Dim MaxNum As Integer
Dim SubNum As Integer

Sub a()
Dim Num1 As Integer
Dim Num2 As Integer
Dim Num3 As Integer
Dim ADorSB1 As Integer
Dim ADorSB2 As Integer
Dim TSubNum1 As Integer
Dim TSubNum2 As Integer
Dim te As Integer

MinNum = Cells(30, 3).Value
MaxNum = Cells(30, 6).Value + 1
SubNum = Cells(30, 9).Value

For i = 1 To 100
te = Fix((i - 1) / 25)
    For j = 1 To 100
        Num1 = suiji
        Num2 = suiji
        Num3 = suiji
        ADorSB1 = suijiADorSB
        ADorSB2 = suijiADorSB
        If ADorSB1 Then
            TSubNum1 = Num1 + Num2
        Else
            TSubNum1 = Num1 - Num2
        End If
        If ADorSB2 Then
            TSubNum2 = TSubNum1 + Num3
        Else
            TSubNum2 = TSubNum1 - Num3
        End If
        
        If TSubNum1 >= 0 And TSubNum2 >= 0 And TSubNum1 <= SubNum And TSubNum2 <= SubNum Then
            If ((ADorSB1 = 0 And Num2 >= 10) Or (ADorSB2 = 0 And Num3 >= 10)) Then
            
            Else
                Cells((i + 1) - (te * 25), te * 3 + 2).Value = Num1 & IIf(ADorSB1, "+", "-") & Num2 & IIf(ADorSB2, "+", "-") & Num3 & "="
                Exit For
            End If
        End If
    Next j
Next i

Cells(30, 11).Value = Now

End Sub

'获取随机数
Function suiji() As Integer
    Randomize
    suiji = Int(MinNum + Rnd * (MaxNum - MinNum))
End Function

'获取随机加减号
Function suijiADorSB() As Integer
    Randomize
    suijiADorSB = Int(Round(Rnd, 0))
End Function
版权所有©转载必须以链接形式注明作者和原始出处:纪小年 » EXCEL通过VBA生成小学生混合加减法数学题
目前还没有任何评论.