我有一个包含以下模板的 xls 列:
Model : QE85Q80T,Diagonala cm / inch : 216 cm / 85 inch,Smart TV : Da,Format : Ultra HD 4K,Tip ecran : QLED,Rezolutie (pixeli) : 3840 x 2160,Tuner Digital : Da (DVB-T2 / C / S2) x 2,Difuzor integrat : 60 W,Wireless : Da,Ethernet : Da,Iesire audio digitala (optica) : x 1,CI (Slot) : PLUS,USB 2.0 : x 2,HDMI : x 4,Culoare : Negru,Putere consumata (W) : 257,Dimensiuni cu stand (mm) : 1892.8 x 1163.1 x 338.8,Greutate (Kg) : 50.1
请注意变量:“对角线厘米/英寸”;“智能电视”;“格式”等等......
它们都可以有不同的值。
我试图完成的是在不同的单元格中提取“之间的值对角线厘米/英寸:“和第一个”,“- 在这种情况下,该值为”216 厘米/85 英寸“。
另一个单元格中的值与“智能电视 :“和第一个”,“- 价值将是”大“其余的等等……
在谷歌上多次搜索后我得出了这个公式:
=MID(F2,搜索("对角线厘米/英寸:",F2)+3,搜索(",",F2)-搜索("对角线厘米/英寸:",F2)-4)
问题是它没有给我带来任何东西。
我做错了什么?
答案1
答案2
答案3
对于使用什么,也许有人会喜欢以下方法:
=LET(SearchCell,A1, StartingString,"Diagonala cm / inch : ", EndingString,",", MID(SearchCell, FIND(StartingString,SearchCell) + LEN(StartingString), FIND(EndingString,SearchCell,1+FIND(StartingString,SearchCell)) - (FIND(StartingString,SearchCell)+LEN(StartingString)) ) )
(我喜欢Isolated
使用LEN()
来避免对字符串的长度进行硬编码。当然,人们会知道它,所以它不会成为问题,但它就此止步,可以这么说,并且不容易扩展到人们在编写基本公式并使用一段时间后可能想要实现的更通用的解决方案。在可能的情况下应该帮助升级!)
方法是先找到所需结果的起点,然后找到终点,再找到输入字符串所需的字符数。因此FIND()
,加上定位字符串的长度。然后FIND()
找到该点之后的“,” ,这需要在起点上加 1,这样才能FIND()
从那里开始,而不会被前面的逗号混淆。
这很简单,他们称之为“丑陋”……哦,好吧……要升级,请使用函数LET()
。人们可能会对此非常着迷,但我建议仅将其用于更改公式的输入:要查找的单元格、起始字符串和结束字符串。这样,更改查找的单元格很容易,因为它只出现在一个地方,而不是公式使用它的六个左右。也应该加快速度,因为那是一个计算,而不是六个。两个边界字符串也很容易编辑,因为它们也在开头,因此公式可以轻松调整以进行要求的第二个搜索和其他搜索。使用输入单元格包含边界的字符串也变得非常容易。
我认为在这里使用得越多,LET()
就越难理解公式的作用,尽管其他人的大脑工作方式不同,他们可能喜欢将其组件放入Let()
单元格范围命名范围的形式(Excel 参考,程序员会称它们为变量),然后工作公式就会变得非常简单。如果这可以减少公式的整体大小,我可能会建议这样做,但在这种情况下不会,所以......但说实话,这对其他人来说是相反的,所以对他们来说,为什么不呢?
我认为任何读过这个问题的人都会想要上述方法,即一种实现所讨论内容的方法。但实际上真正要问的是,为什么通过 Google 找到的公式会失败?
基本上,因为它没有寻找正确的开始,也没有计算要采用的正确字符串长度。SEEARCH()
例如第一个:它找到边界字符串的开始并向其添加... 3...。考虑到公式的逻辑与这些答案使用的逻辑基本相同,因此没有任何充分的理由。需要在MID()
完整边界字符串之后开始构建字符串。该字符串长 22 个字符,而不是 3 个,所以...然后,的第三个参数MID()
,即要返回的字符串长度,出现错误。它找到边界字符串前面的逗号并从那里开始工作,实际上给出了负长度,因此出现错误。其他输入数据可能会给它一个实际的返回,但它实际上永远不会给出正确的返回,因为它使用了完全错误的输入选择。因此,纠正这些问题,你应该有一个可行的公式。方法不错,实现不太好。但找到一个好的方法几乎总是更难的事情!只需要重新考虑如何选择导致生成数字作为该糟糕MID()
函数的参数的细节。