如何在 Excel 中搜索最相似的序列?

如何解决如何在 Excel 中搜索最相似的序列?

我希望在 excel 列中搜索与我输入的序列最相似的序列。

例如,在下面的示例中,我提供的序列是:1,2.5,3.5,1。它在下图中被描绘为黑色。

在我搜索的列中,有几个序列。与我最相似的是蓝色。它是:1,2,3,1。

Graph

你们中的任何人都知道一个 excel 公式,或一系列公式和步骤,它可以让 Excel 确定这一点 - 例如,当我输入黑色序列时,它将与蓝色序列匹配作为最相似的一个

感谢this堆栈溢出答案,我已经知道如何使用以下公式在一组数字中搜索精确序列:

=MATCH([Criteria 1]&[Criteria 2],[Data 1st val]:[Data last val]&[Data 2nd val]:[Data last + 1 val],0)

例如,如果我有以下数字:1,5,1,4,并且我希望找到序列 1,4,则此公式将引导我在该组数字中找到它。

我也已经知道如何使用这个公式找到与我输入的数字最接近的匹配项(如果您查看下面的示例图片会更有意义):=INDEX($A$1:$A$10,MATCH (MIN(ABS(C1-B1:B10)),ABS(C1-$B$1:$B$10),0))

Example

当我按下 control+shift+enter 时,这个公式会产生数字 4,表示第 4 行,因为我在 C1 中输入的数字是 39,最接近数字 40,它位于第 4 行.

所以我有两个组成部分——找到精确的序列,并找到最接近的数字——但现在的问题是,我如何组合这两个公式来向我显示最接近的数字数字序列,如果像我在第一个带有蓝黑线的示例中那样绘制在图形上,看起来最相似的数字是什么?

如果您不仅能帮助找到最接近的序列,而且还能按照最相似到最不相似的顺序找到最接近的序列,那么还有奖励积分。

再说一次,我不需要将其合并为一个公式;我很高兴手动通过几个步骤和不同的公式来得出答案。

如果您认为以其他方式更好地解决此问题,请告诉我!但我没有任何编码经验,所以我认为 Excel 是我最好的选择。

非常感谢!!!

解决方法

不确定您究竟是如何设置的,但如果我在表格中可视化您的图表,您可以使用以下内容(如果有 Microsoft365):

enter image description here

H2 中的公式:

=INDEX(SORTBY(B2:F4,MMULT(ABS(B2:F4-B1:F1),SEQUENCE(5,0))),1)

将所有数据放在一列中,如果您有 5 的序列,您可以在下面找到一个示例。

enter image description here

C2 中的公式:

=TRANSPOSE(INDEX(SORTBY(INDEX(A2:A16,SEQUENCE(11,5)-ROUNDDOWN(SEQUENCE(11,5,0.2),0)*4),MMULT(ABS(INDEX(A2:A16,0)*4)-TRANSPOSE(B2:B6)),1))

如果您想让它适用于 A1:A500 中包含 10 个数字的序列的数据集:

=TRANSPOSE(INDEX(SORTBY(INDEX(A1:A500,SEQUENCE(COUNT(A1:A500)-9,10)-ROUNDDOWN(SEQUENCE(COUNT(A1:A500)-9,10,0.1),0)*9),MMULT(ABS(INDEX(A1:A500,0)*9)-TRANSPOSE(B1:B10)),SEQUENCE(10,1))

如果您可以访问 LET() 会更好,而只需更改范围引用即可:

=LET(X,A2:A500,Y,INDEX(X,SEQUENCE(COUNT(X)-9,10)-ROUNDDOWN(SEQUENCE(COUNT(X)-9,TRANSPOSE(INDEX(SORTBY(Y,MMULT(ABS(Y-TRANSPOSE(B2:B11)),1)))

EDIT2:

要使其更具动态性,您可以使用:

=LET(W,1,X,11,Z,SEQUENCE(COUNT(X)-(Y-1),Y)-ROUNDDOWN(SEQUENCE(COUNT(X)-(Y-1),1/Y),0)*(Y-1)),TRANSPOSE(INDEX(SORTBY(Z,MMULT(ABS(Z-TRANSPOSE(B2:INDEX(B:B,Y+1))),SEQUENCE(Y,W)))

其中“W”是第 n 个最接近的匹配,其中“Y”是序列的长度,示例中为 11。

,

我的方法是计算每种颜色和输入值之间的匹配值,例如每个点的差异之和。

这个公式是:

=SUM(IF([inputrange]<>"",ABS([inputrange]-[colorrange]),0))

其中 [inputrange] 是您输入的范围(下图中的红色表示,$C$6:$G$6),[colorrange] 是该颜色的范围(表示为蓝色,C2:G2)。>

enter image description here

差值最小的颜色为匹配:

=VLOOKUP(MIN([matchvalues],[rangeofmatchandcolors],2,0)

其中 [matchvalues] 是匹配值的范围(下图中的蓝色表示,单元格 A2:A4),而 [rangeofmatchandcolors] 是匹配值和颜色(表示为红色,A2:B4) strong text

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?