昨天的那个公式能否再帮我讲述详细些,万分感谢

 我来答
Excel小树
2020-11-03 · 喜欢在交流中提升自己
Excel小树
采纳数:1080 获赞数:1258

向TA提问 私信TA
展开全部

感觉会是个很长的回答,字字认真揣摩,意在容易理解,烦请同样认真阅读。

我们的公式是这样的:

=IF(ROW(A2)>$P$4,"",INDEX(ycjl[[故障原因]:[故障时间/H]],MATCH(查询!$B$1&$O$4,ycjl[辅助列],0)+ROW(A1),1))

对于这个公式,包含的隐藏信息还是蛮多的,即使您补充了截图,也仍然没有截取准确全面的数据信息,所以,我们只能猜测其中某些自定义区域的范围了。猜测如下,如有偏离请及时指出:

1、 ycjl[[故障原因]:[故障时间/H]],之前我们的猜测是自定义区域,通过截图,我们纠正一下,其实是工作表异常记录中的E:I列区域,由于该区域套用了特定的表格格式,所以在被引用的时候会改编成ycjl[[故障原因]:[故障时间/H]],而不是通常的容易理解和识别的异常记录! E:I

2、 同样的ycjl[辅助列]受套用表格格式的影响替代了异常记录! K:K这个通俗的引用描述。顺便我们说一下辅助列K列的由来:K2中公式猜测为A2&B2或者ycjl[故障日期]&[影响工序],结果是44105一烧,其中的44105是日期的数值(这个搜索excel日期和时间规则了解一下,这里不多说,篇幅不可控)

我们便于为了便于描述,约定以上两个区域分别为区域1和区域2.

MATCH(查询!$B$1&$O$4,ycjl[辅助列],0)的意思是在区域2中查找查询!$B$1&$O$4(即B1和O1文本的合并结果:44135一烧)所在的位置,结果返回的数字代表所查数据在区域2中的第几个,假如44135一烧 在第10行,结果便是10。请记住这个数字。

INDEX函数目的是从区域1中引用match所查找到的相应位置(就是这个10)的对应数据异常记录! E10:I10的第一列的数据(这里公式的作者有些复杂化了,因为index本身就具有一维数据引用功能的,INDEX(ycjl[[故障原因]:[故障时间/H]],MATCH(查询!$B$1&$O$4,ycjl[辅助列],0)+ROW(A1),1)是二维引用,可以用INDEX(ycjl[[故障原因],MATCH(查询!$B$1&$O$4,ycjl[辅助列],0)+ROW(A1))代替的,这样会更容易理解一些)。Index+match是常用的数据查询引用公式。+ROW(A1)是调节引用行数的,会随着公式下拉一次变成  +1   +2  +3  、、、、实现罗列引用第11行、第12行、第13行、、、、、数据。

外层嵌套的=IF(ROW(A2)>$P$4,"",意在限制显示,即行号大于设定值P4时,不进行任何查找,防止引用大量无用数据,猜测P4公式是一个countifs函数计算了异常记录工作表中10月31日一烧的个数。

到此,我们看出公式就是具体化的index+match查找引用

=index(想要获取的数据的区域,match(查找值,查找值所在区域,0))

希望有所帮助!

来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式