ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 函数,排列组合求最大

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-25 14:53 | 显示全部楼层
本帖最后由 cinlo 于 2021-5-25 14:58 编辑
jivy1212 发表于 2021-5-25 13:44
知识远远不够,只够想到15个位置放四个不同数的所有组合,要这样的内存数组。

一点思路没有啊。。。。。期待大神神作。。。我的想法是,求出每列前4大的值(因为第5大及更小的值肯定用不上了),然后就变成了4*4*4*4=256种组合了,运算量大大降低,但怎么得到这256种组合呢?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-5-25 15:14 | 显示全部楼层
WsnowNIU 发表于 2021-5-25 13:33
这道题不适合用函数做,还是VBA吧。
本来是想写写的,两两列矩积,再把两个矩积,转换成一行,一列,再矩 ...

黑黑,只会循环和判断:

  1. Sub Fish()
  2.     Dim aa, bb() As Long
  3.     Dim i&, j&, k&, l&, n&
  4.     aa = [a2:d16]
  5.     ReDim bb(1 To UBound(aa) ^ UBound(aa, 2))
  6.         For i = 1 To UBound(aa)
  7.             For j = 1 To UBound(aa)
  8.                 For k = 1 To UBound(aa)
  9.                     For l = 1 To UBound(aa)
  10.                         If i <> j And i <> k And i <> l And j <> k And j <> l And k <> l Then
  11.                             n = n + 1
  12.                             bb(n) = aa(i, 1) * aa(j, 2) * aa(k, 3) * aa(l, 4)
  13.                         End If
  14.                     Next l
  15.                 Next k
  16.             Next j
  17.         Next i
  18.     MsgBox WorksheetFunction.Max(bb)
  19. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-5-25 16:32 | 显示全部楼层
本帖最后由 yibao2 于 2021-5-25 16:42 编辑

其实题目说的很清楚了,如果配图不用随机可能更好解理。可是不用随机又不能体现数据的多元化。
image.png
image.png

TA的精华主题

TA的得分主题

发表于 2021-5-25 16:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 袁勇 于 2021-5-25 16:45 编辑

untitled1.png

TA的精华主题

TA的得分主题

发表于 2021-5-25 16:46 | 显示全部楼层
袁勇 发表于 2021-5-25 10:48
??

=PRODUCT(LARGE(SUBTOTAL(4,OFFSET(A1:D1,ROW(1:15),)),{1;2;3;4}))

按我理解的题意,袁老师这个是对的。

TA的精华主题

TA的得分主题

发表于 2021-5-25 16:49 | 显示全部楼层
yibao2 发表于 2021-5-25 16:46
按我理解的题意,袁老师这个是对的。

不符合题意。

要求不同行不同列!!

TA的精华主题

TA的得分主题

发表于 2021-5-25 16:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-5-25 16:50 | 显示全部楼层
yibao2 发表于 2021-5-25 16:46
按我理解的题意,袁老师这个是对的。

当行里的前4大值中有1个以上在同一列时。

TA的精华主题

TA的得分主题

发表于 2021-5-25 16:52 | 显示全部楼层
cinlo 发表于 2021-5-25 14:53
一点思路没有啊。。。。。期待大神神作。。。我的想法是,求出每列前4大的值(因为第5大及更小的值肯定用 ...
  1. COUNTIF(OFFSET(A:A,,{0,1,2,3}),">"&A2:D16)+1<5
复制代码
加类似这段?组合才是关键吧。

TA的精华主题

TA的得分主题

发表于 2021-5-25 17:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jivy1212 发表于 2021-5-25 16:52
加类似这段?组合才是关键吧。

他的思路很好,每列各取4个最大值,实现起来很麻烦,要判断全部不同行才行。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 16:04 , Processed in 0.037874 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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