Excel精英培训网

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

[VBA] 用数学或者VBA计算可以构成多少个正方形

[复制链接]
发表于 2017-1-9 22:04 | 显示全部楼层 |阅读模式


用数学或者VBA计算可以构成多少个正方形


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2017-1-10 08:58 | 显示全部楼层
回复

使用道具 举报

发表于 2017-1-10 19:30 | 显示全部楼层
        1        1        1       
        1        1        1        1
1        1        1        1       
        1        1        1       

输出来是14个正方形。
  1. Sub test()
  2.     arr = [a1:e4]
  3.     m = UBound(arr)
  4.     n = UBound(arr, 2)
  5.     ReDim ar(m + n, n + m)
  6.     For i = 1 To m
  7.         For j = 1 To n
  8.             ar(i, j) = arr(i, j)
  9.         Next
  10.     Next
  11.    
  12.     For i1 = 1 To m
  13.       For j1 = 1 To n
  14.         If ar(i1, j1) Then
  15.           For i2 = i1 + 1 To m
  16.             For j2 = 1 To j1
  17.               If ar(i2, j2) Then
  18.                            
  19.                 If j1 = j2 Then
  20.                   If ar(i1, j1 + i2 - i1) Then
  21.                     If ar(i2, j2 + i2 - i1) Then
  22.                       k = k + 1
  23.                       Cells(k, 10) = i1 & "," & j1 & ";" & i2 & "," & j2 & ";" & i1 & "," & j1 + i2 - i1 & ";" & i2 & "," & j2 + i2 - i1
  24. '                      Cells(i1, j1).Interior.ColorIndex = 5
  25. '                      Cells(i2, j2).Interior.ColorIndex = 5
  26. '                      Cells(i1, j1 + i2 - i1).Interior.ColorIndex = 5
  27. '                      Cells(i2, j2 + i2 - i1).Interior.ColorIndex = 5
  28. '                      [a1:e4].Interior.ColorIndex = 0
  29.                     End If
  30.                   End If
  31.                 Else
  32.                   If ar(i1 + j1 - j2, j1 + i2 - i1) Then
  33.                     If ar(i2 + j1 - j2, j2 + i2 - i1) Then
  34.                       k = k + 1
  35.                       Cells(k, 10) = i1 & "," & j1 & ";" & i2 & "," & j2 & ";" & i1 + j1 - j2 & "," & j1 + i2 - i1 & ";" & i2 + j1 - j2 & "," & j2 + i2 - i1
  36. '                      Cells(i1, j1).Interior.ColorIndex = 5
  37. '                      Cells(i2, j2).Interior.ColorIndex = 5
  38. '                      Cells(i1 + j1 - j2, j1 + i2 - i1).Interior.ColorIndex = 5
  39. '                      Cells(i2 + j1 - j2, j2 + i2 - i1).Interior.ColorIndex = 5
  40. '                      [a1:e4].Interior.ColorIndex = 0
  41.                     End If
  42.                   End If
  43.                 End If
  44.                
  45.               End If
  46.             Next
  47.           Next
  48.         End If
  49.       Next
  50.     Next
  51.     MsgBox k
  52. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
laoau138 + 3 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-1-10 21:43 | 显示全部楼层
香川群子 发表于 2017-1-10 19:30
1        1        1       
        1        1        1        1
1        1        1        1       

什么输出也没有,这个是大侠样  hhjjpp

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 21:40 , Processed in 0.230580 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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