ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 关于组成的一个判断方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-1-25 21:53 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 数论 于 2023-1-25 22:14 编辑

首先感谢PINY版主和陆离老师。
其实,我不知道这个方法究竟值不值得分享,因为它计算量大,不过又挺简短,我问了许多数学高手都没办法直接从数学角度证明,只能通过硬算来对这个结果进行证明啦。
先看下面这个题目:
123.jpg 判断组成是否一样.zip (9.97 KB, 下载次数: 18)
这个题目如果采用这种方法挺简单
  1. =IF(SUM(A4:E4^6-G4:K4^6),"不",)&"相同"
复制代码
但是这样算的话计算量会很大,数据量大可能会卡,但是又不舍它的简短。
这道题是5位数,最低6次方。
以下是其余位数的最低次方判断。
2位数,3次方
3位数,5次方
4位数,6次方
5位数,6次方
6位数,7次方
7位数,7次方
至于8位数及其它,陆离老师写了一段代码,大家可以自行测试。
大致是这样的原理,先列出所有数值,排序,去重放字典的关键字,求出次方和放项,然后判断如果和已经存在项里了,就是重复
陆离老师提供字典测试.zip (17.59 KB, 下载次数: 11)
谢谢.png

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-26 09:06 | 显示全部楼层
原来是这个意思,

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-26 09:37 | 显示全部楼层
  1. =IF(SUM(--(SORT(A4:E4,,,1)=SORT(G4:K4,,,1)))=5,TRUE,FALSE)
复制代码

其实现在有了排序函数sort之后列公式就简单很多了,只需要排序,然后逐位比较就好

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-26 09:40 | 显示全部楼层
本帖最后由 准提部林 于 2023-1-26 09:45 编辑

1) 看不懂//數字後面加^#, 有何作用?
   用"算盤"看看
   =IF(SUM(10^A4:E4-10^G4:K4),"不相同","相同")

2) 代碼//都已排序了, 為何也要加 Power_Sum 再算一次???
   __看懂了..原來是為了驗證^#

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-26 09:52 | 显示全部楼层
數字排序//
Function SortNum(n)
Dim X(9), i%, k
For i = 1 To Len(n)
    k = Mid(n, i, 1)
    X(k) = X(k) & k
Next i
SortNum = Join(X, "")
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-26 10:08 | 显示全部楼层
白栎 发表于 2023-1-26 09:37
其实现在有了排序函数sort之后列公式就简单很多了,只需要排序,然后逐位比较就好

试了下,当某个表格重复了数字,就不对。

TA的精华主题

TA的得分主题

发表于 2023-1-26 10:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
按照楼主思路,用powerquery也是可以做出来了,供参考。两个表,然后合并一起。

  1. let
  2.     源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  3. a=List.Transform(Table.ToRows(源),each List.Sort(List.Distinct(_))),
  4.     转换为表 = Table.FromList(a, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
  5.     已添加索引 = Table.AddIndexColumn(转换为表, "索引", 1, 1, Int64.Type)

  6. in
  7.     已添加索引
复制代码
  1. let
  2.     源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  3. a=List.Transform(Table.ToRows(源),each List.Sort(List.Distinct(_))),
  4.     转换为表 = Table.FromList(a, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
  5.     已添加索引 = Table.AddIndexColumn(转换为表, "索引", 1, 1, Int64.Type)

  6. in
  7.     已添加索引
复制代码
  1. let
  2.     源 = Table.NestedJoin(表2, {"索引"}, 表1, {"索引"}, "表1", JoinKind.LeftOuter),
  3.     #"展开的“表1”" = Table.ExpandTableColumn(源, "表1", {"Column1"}, {"Column1.1"}),
  4.     已添加自定义 = Table.AddColumn(#"展开的“表1”", "判断相同与否", each if [Column1]=[Column1.1] then "相同" else "不相同"),
  5.     删除的列 = Table.RemoveColumns(已添加自定义,{"索引", "Column1", "Column1.1"})
  6. in
  7.     删除的列
复制代码
image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-26 10:24 | 显示全部楼层
quqiyuan 发表于 2023-1-26 10:08
试了下,当某个表格重复了数字,就不对。

不会啊,我用楼主文件试过,跟模拟答案一模一样,模拟题里也有00001这样的重复呢,你是不是哪弄错了

TA的精华主题

TA的得分主题

发表于 2023-1-26 11:22 | 显示全部楼层
想了下相当于可放回的抽取组合。


10个数字取7个,不算都抽0,对应数量-1

image.png

需要验证的数量不多,测试2-7,验证通过
image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-26 12:36 | 显示全部楼层
用 9 次方, 就可以省个括号


=IF(SUM(A4:E4^9-G4:K4^9),"不",)&"相同"

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-5-13 03:22 , Processed in 0.040659 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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