无忧启动论坛

 找回密码
 注册
搜索

求帮忙写个Excel函数,要求如图,谢谢

查看数: 1769 | 评论数: 20 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-8-13 11:27

正文摘要:

本帖最后由 lgylgyxy 于 2025-8-13 13:41 编辑 求帮忙写个Excel函数,要求如图,谢谢 A1列,B1列里不是连续的数字,可以看着为手动填入的任意数字 A1列,B1列里可能有重复的数字,也可能没有 A1单独列没有重复 ...

回复

hjdx001 发表于 昨天 20:59
高手来解决
plezhong 发表于 7 天前
除了发论坛,也可以用AI生成,修整几次应该就出来了。
ILOVEQQ 发表于 2025-8-14 14:17:44
太難了
guong 发表于 2025-8-14 12:19:09
ppll2030 发表于 2025-8-13 17:31
我也来练练手,好久没玩了。

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

来学习下
wang1126 发表于 2025-8-14 10:11:02
谢谢楼主分享
yuping 发表于 2025-8-14 09:58:31
高手学习。谢谢
dura 发表于 2025-8-13 18:24:06
双色球
my9823 发表于 2025-8-13 17:41:21
其实,直接问deepseek或者千文,它会自动给你写好。现在懒人都这么做。不过,等它生成函数,你先验证一下,有时候由于表达不清楚,ai会曲解你的意思。
xshow15 发表于 2025-8-13 17:37:38
都是人才啊,太复杂了!
ppll2030 发表于 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,""))))

解题完成。

点评

来学习下  详情 回复 发表于 2025-8-14 12:19
小龙飞 发表于 2025-8-13 15:51:19
不会 帮顶
qytjc 发表于 2025-8-13 15:07:28
这种问题,你放到EXCEL论坛,几分钟就有人解答了!
djsh001 发表于 2025-8-13 14:58:01
向Excel高手学习。谢谢!
ohte 发表于 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每次计算会重新生成随机数
doforyou 发表于 2025-8-13 13:10:09
怎么感觉像是买彩票选号的呢
9zhmke 发表于 2025-8-13 13:07:15
你描述的情景也许是你自己设想的算法,但不一定是最好的算法,你可以把你的真实情景再说一遍,坛友们帮你把算法优化一下。
RNM25728 发表于 2025-8-13 12:37:25
要用组合数据
lbw2007 发表于 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
Zhengqiang5q 发表于 2025-8-13 12:08:56
路过而已!
guong 发表于 2025-8-13 12:06:59
不会 帮顶

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

闽公网安备 35020302032614号

GMT+8, 2025-8-23 02:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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