excel求一个函数公式

各位大神好!遇到一个公式卡阻:在excel表中,A列到E列是各班组工序转序的时间,想要在G列得到每一行最后的转序时间及内容,如图中G1显示。目前我自己设置了一个数组公式=INDEX($A1:$E1,MATCH(MAX(--LEFT(($A1:$E1),(FIND("转",$A1:$E1)-1))),VALUE(--LEFT(($A1:$E1),(FIND("转",$A1:$E1)-1))),)),可以得出这个结果,如G1,但是必须是A列到E列都得有数据,不为空才行,如果为空或描述中没有“转”这个字,就会出现#VALUE!,如G2与G3显示的,请教各位大神,要怎样优化这个公式,才能满足不论A列到B列有没有空值,都可以得到最后转序的内容,谢谢!

G1公式改为

=INDEX($A1:$E1,MATCH(MAX(--LEFT(A1:E1,2*LEN(A1:E1)-LENB(A1:E1))),--LEFT(A1:E1,2*LEN(A1:E1)-LENB(A1:E1)),))

也是数组公式。

但空格确实是个问题,考虑用定位空值后替换为“0”。

追问

谢谢,这个公式解决了有无"转″字这个问题,但感觉空值改为0后,全屏到处都有0,有点影响感观

追答

选定你要填充0值的单元格区域就行。

还可以把0值隐藏,就解决了数据区域内看到0的问题了。

追问

谢谢^_^,我把表格整体设置改了一下,整张表不显示0值,就在显示上还是类似于空值,然后公式也出来结果了。

追答

可以了,G1公式改为

=INDEX(A1:E1,MATCH(MAX(IFERROR(--LEFT(A1:E1,2*LEN(A1:E1)-LENB(A1:E1)),0)),IFERROR(--LEFT(A1:E1,2*LEN(A1:E1)-LENB(A1:E1)),0),))

也是数组公式。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-22
问题出在find函数,没有找到"转"不是返回假值,而是返回错值。把两个find改成iferror( find(,,),1),或者iferror(find(,,),2)。自己调试一下用1还是2。追问

这个方法我之前试过,但在max那一层,还是会出现#value

追答

把iferror加在max与LEFT之间,=INDEX($A2:$E2,MATCH(MAX(IFERROR(--LEFT(($A2:$E2),(FIND("转",$A2:$E2)-1)),1)),VALUE(IFERROR(--LEFT(($A2:$E2),(FIND("转",$A2:$E2)-1)),1)),))
这样可以解决空单元格问题,没有转不会出错但其单元格不会参与比较,毕竟没有转就不好识别时间。

追问

谢谢!你这公式也解决了问题。不好意思,点不了釆纳了,还有哪种方式给得了财富值呀?

追答

能解决问题就可以了。

第2个回答  2021-04-21
G1写公式,然后下拉即可:
=LOOKUP(1,0/(A1:E1<>""),A1:G1)追问

不是输出最后那列的数据,是要最后转序时间的那个数据,比如第三行,4月15是最后的转序时间,就需要得出“4/15转热处理”

追答

转序时间 是什么意思?在你的数据中的判定规则是什么?

追问

判定规则是根据每个单元格里的日期,输出最后(最大)日期那格的内容,(4/15指4月15日,4/25指4月25日),基本每一个单元格里的日期都在“转”这个字前面,但有的单元格是空值

第3个回答  2021-04-21
没看懂你到底要算个什么追问

A列到E列是数据源,在G列输入公式,要得到对应每一行最后转序那个时间的转序内容,就是我用红色框框圈起的内容

相似回答