|
本帖最后由 乐乐2006201506 于 2017-3-27 21:53 编辑
各位老师,附件中代码可以实现e3单元格输入数字(1,2,3……),f4中用公式取得棱长为e3中数值的正方体表面积,然后运行代码(按钮1),即可得出表面积为f4中值的所有正方体(长方体)的棱长(长宽高)的数据,但是该代码在数值比较大的情况下,比如棱长20时,正方体表面积为2400,循环时非常耗时。同时,如果代码改进并提速后,我想实现循环赋值给S,让自动算出指定范围内的长宽高(这个要求我自己也可以用循环实现)。
也可以用另外的思路另写代码。
在此先谢谢了。
忘记提交代码了。
- Sub test1()
- Dim s, i&, j&, k, v, ar(1 To 65536, 1 To 5), n&
- Application.DisplayAlerts = False
- s = Range("f4").Value
- If s Mod 2 = 1 Then MsgBox "无整数解": Exit Sub
- s = s / 2 'i * j + i * k + j * k=s/2 必须为整数
- For i = 1 To s / 2 '当j=1,k=1时,i有最大值s/2
- For j = 1 To s / 2 '当i=1,k=1时,j有最大值s/2
- k = (s - i * j) / (i + j) '根据 i * j + i * k + j * k=s ,求出k
- If k < 1 Then Exit For '如果k出现负值,退出循环
- If k = Int(k) Then '如果k为正整数
- n = n + 1
- ar(n, 1) = i
- ar(n, 2) = j
- ar(n, 3) = k
- ar(n, 4) = i * j * k
- ar(n, 5) = s * 2
- End If
- Next j
- Next i
- [H:L].ClearContents
- [H1].Resize(1, 5) = Array("长", "宽", "高", "体积", "表面积")
- [H2].Resize(n, 5) = ar
- Application.DisplayAlerts = True
- End Sub
复制代码
|
|