Excel精英培训网

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

[VBA] 用数学或者VBA计算随意一个棋盘内最多正方形

[复制链接]
发表于 2017-1-9 22:12 | 显示全部楼层 |阅读模式
用数学或者VBA计算随意一个棋盘内最多正方形

本帖子中包含更多资源

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

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-1-10 08:56 | 显示全部楼层
判断谁多谁少比较容易,数清楚比较难。呵呵。
回复

使用道具 举报

 楼主| 发表于 2017-1-10 09:34 | 显示全部楼层
本帖最后由 laoau138 于 2017-1-10 13:07 编辑
香川群子 发表于 2017-1-10 08:56
判断谁多谁少比较容易,数清楚比较难。呵呵。

书本答案

2号赢了

1号被6个正方形围

2号被22个正方形围

不知道那个对,实在不懂要过程
回复

使用道具 举报

发表于 2017-1-10 14:59 | 显示全部楼层
laoau138 发表于 2017-1-10 09:34
书本答案

2号赢了

确实是有22个。

1X1 = 1 个
2X2 = 2*2=4 个
3X3 = 2*3=6 个
4X4 = 2*3=6 个
5X5 = 2*2=4 个
6X6 = 1 个

总和=22个。

以下VBA自定义函数可以统计点坐标对应所占正方形总数:

  1. Function f(i, j, m)
  2.     n = (m + 1) \ 2
  3.     If i > n Then i = m - i + 1
  4.     If j > n Then j = m - j + 1
  5.     For l = 1 To m
  6.         If l > n Then t = m - l + 1 Else t = l
  7.         If i < t Then t1 = i Else t1 = t
  8.         If j < t Then t2 = j Else t2 = t
  9.         s = s + t1 * t2
  10.     Next
  11.     f = s
  12. End Function
复制代码


评分

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

查看全部评分

回复

使用道具 举报

发表于 2017-1-10 19:40 | 显示全部楼层
扩展为矩形方格子中的正方形总数统计。
即m、n可以不同。

但是请注意 i 和 m 、j 和 n 保持方向相同,不要弄反了!
  1. Function f(i, j, m, n)
  2.     m1 = (m + 1) \ 2: If i > m1 Then i = m - i + 1
  3.     n1 = (n + 1) \ 2: If j > n1 Then j = n - j + 1
  4.     For l = 1 To IIf(m < n, m, n)
  5.         If l > m1 Then t1 = m - l + 1 Else t1 = l
  6.         If i < t1 Then t1 = i
  7.         
  8.         If l > n1 Then t2 = n - l + 1 Else t2 = l
  9.         If j < t2 Then t2 = j
  10.         
  11.         s = s + t1 * t2
  12.     Next
  13.     f = s
  14. End Function
复制代码

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-1-10 22:31 | 显示全部楼层
香川群子 发表于 2017-1-10 19:40
扩展为矩形方格子中的正方形总数统计。
即m、n可以不同。

好厉害高手
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 16:40 , Processed in 1.087080 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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