无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1770|回复: 22
打印 上一主题 下一主题

[已解决] 求帮忙写个Excel函数,要求如图,谢谢

[复制链接]
跳转到指定楼层
#
发表于 2025-8-13 11:27:19 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
50无忧币
本帖最后由 lgylgyxy 于 2025-8-13 13:41 编辑

求帮忙写个Excel函数,要求如图,谢谢
A1列,B1列里不是连续的数字,可以看着为手动填入的任意数字
A1列,B1列里可能有重复的数字,也可能没有
A1单独列没有重复的数字
B1单独列也没有重复的数字

从A1列中随机选出4个数字,
从B1列中随机选出1个数字,这个数字不能与从A1中选出的任一数字重复,如果重复了,需再次选出,直至不重复,然后显示输出在excel单元格里

=INDEX(A1:A29, INDEX(SORTBY(FILTER(ROW(A1:A29), A1:A29<>""), RANDARRAY(COUNTA(A1:A29))), {1,2,3,4}))


=IFERROR(INDEX(FILTER(B1:B7, (B1:B7<>"")*ISNA(MATCH(B1:B7, D2:G2, 0))), RANDBETWEEN(1, ROWS(FILTER(B1:B7, (B1:B7<>"")*ISNA(MATCH(B1:B7, D2:G2, 0)))))), "无符合条件的值")

1.rar (8.33 KB, 下载次数: 12)








点评

自己已解决,excel表达式在附件  发表于 2025-8-13 13:40
20#
发表于 昨天 20:59 | 只看该作者
高手来解决
回复

使用道具 举报

19#
发表于 7 天前 | 只看该作者
除了发论坛,也可以用AI生成,修整几次应该就出来了。
回复

使用道具 举报

18#
发表于 2025-8-14 14:17:44 | 只看该作者
太難了
回复

使用道具 举报

17#
发表于 2025-8-14 12:19:09 | 只看该作者
ppll2030 发表于 2025-8-13 17:31
我也来练练手,好久没玩了。

根据题目要求,数据在A、B两列,A列有效数据29行,B列有效数据7行 ...

来学习下
回复

使用道具 举报

16#
发表于 2025-8-14 10:11:02 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

15#
发表于 2025-8-14 09:58:31 | 只看该作者
高手学习。谢谢
回复

使用道具 举报

14#
发表于 2025-8-13 18:24:06 | 只看该作者
双色球
回复

使用道具 举报

13#
发表于 2025-8-13 17:41:21 | 只看该作者
其实,直接问deepseek或者千文,它会自动给你写好。现在懒人都这么做。不过,等它生成函数,你先验证一下,有时候由于表达不清楚,ai会曲解你的意思。
回复

使用道具 举报

12#
发表于 2025-8-13 17:37:38 | 只看该作者
都是人才啊,太复杂了!
回复

使用道具 举报

11#
发表于 2025-8-13 17:31:42 | 只看该作者
我也来练练手,好久没玩了。

根据题目要求,数据在A、B两列,A列有效数据29行,B列有效数据7行,

(1)从A列中,随机提取不重复4个数值,并输出;
在D2单元格中输入公式:=TRANSPOSE(INDEX(A1:A29,TAKE(UNIQUE(RANDARRAY(20,1,1,29,TRUE)),4)))

(2)其次从B列中,随机提取一个数值,不能与上述D2:G2中提取的数值重复;
在H2单元格中输入公式:=INDEX(FILTER(B1:B7,COUNTIF(D2:G2,B1:B7)=0,""),RANDBETWEEN(1,ROWS(FILTER(B1:B7,COUNTIF(D2:G2,B1:B7)=0,""))))

解题完成。
回复

使用道具 举报

10#
发表于 2025-8-13 15:51:19 | 只看该作者
不会 帮顶
回复

使用道具 举报

9#
发表于 2025-8-13 15:07:28 | 只看该作者
这种问题,你放到EXCEL论坛,几分钟就有人解答了!
回复

使用道具 举报

8#
发表于 2025-8-13 14:58:01 | 只看该作者
向Excel高手学习。谢谢!
回复

使用道具 举报

7#
发表于 2025-8-13 13:30:31 | 只看该作者
在Excel中提取A列中4个不重复的随机数,可以使用以下公式组合:

方法1(适用于Office 365/2021):

excel
Copy Code
=INDEX(SORTBY(UNIQUE(A:A), RANDARRAY(COUNTA(UNIQUE(A:A)))), SEQUENCE(4))
方法2(通用版本):

excel
Copy Code
=INDEX(A:A, SMALL(IF(MATCH(A:A, A:A, 0)=ROW(A:A), ROW(A:A)), RANDBETWEEN(1, COUNTA(A:A)-ROW(A1)+1)))
(需按Ctrl+Shift+Enter作为数组公式输入,然后向下拖动填充4个单元格)

注意事项:

确保A列至少包含4个不重复的值
方法2每次计算会重新生成随机数
回复

使用道具 举报

6#
发表于 2025-8-13 13:10:09 | 只看该作者
怎么感觉像是买彩票选号的呢
回复

使用道具 举报

5#
发表于 2025-8-13 13:07:15 | 只看该作者
你描述的情景也许是你自己设想的算法,但不一定是最好的算法,你可以把你的真实情景再说一遍,坛友们帮你把算法优化一下。
回复

使用道具 举报

4#
发表于 2025-8-13 12:37:25 | 只看该作者
要用组合数据
回复

使用道具 举报

3#
发表于 2025-8-13 12:17:46 | 只看该作者
本帖最后由 lbw2007 于 2025-8-13 12:28 编辑

这哪里是考公式,明显是在考算法。

需要Excel支持动态数组函数(如FILTER, LET, RANDARRAY等),一般是Excel 365/2021及以后版本。
若用的是老版本Excel,需要用VBA来实现。
首先A取的4个数字,在D1单元格输入数组公式(Excel 365/2021支持动态数组,直接回车;旧版本需要Ctrl+Shift+Enter):
INDEX($A$1:$A$35, SORTBY(SEQUENCE(4), RANDARRAY(4)))
这会随机选4个A列不同数字(位置1-35)放在D1:G1。

从B列中选一个不在上述4个数字里的数字
在H1输入以下公式:
=LET(
  selectedA, D1:G1,
  bValues, FILTER($B$1:$B$35, ISNUMBER($B$1:$B$35)),
  filteredB, FILTER(bValues, ISNA(MATCH(bValues, selectedA, 0))),
  INDEX(filteredB, RANDBETWEEN(1, ROWS(filteredB)))
)
从B列中随机选1个不同数字,不等于A列选的4个数字

点评

不对  发表于 2025-8-13 13:03
回复

使用道具 举报

2#
发表于 2025-8-13 12:08:56 | 只看该作者
路过而已!
回复

使用道具 举报

1#
发表于 2025-8-13 12:06:59 | 只看该作者
不会 帮顶
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-23 06:54

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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