分享

Excel 如何实现同工作簿中跨多个工作表查询?

 包礼瞩 2018-04-14
引用: 九月蛳 发表于 2016-9-22 08:34
没能理解到公式,然后拖动公式,C、D两列显示#N/A。麻烦详解,万分感谢。

附件已更新
以B6公式为例,=MAX(MMULT(INDIRECT(TEXT(MATCH(2,COUNTIF(INDIRECT(TEXT({1;2;3;4;5;6;7;8;9;10;11;12},'00')&'!B:B'),B5),),'00')&'!a9:b39'),{1;100000}))-B5*10^5
1.INDIRECT(TEXT({1;2;3;4;5;6;7;8;9;10;11;12},'00')&'!B:B'),此条通过INDIRECT函数和TEXT函数会获得从1-12月共12个工作表的B列,即{'01!B:B';'02!B:B';'03!B:B';'04!B:B';'05!B:B';'06!B:B';'07!B:B';'08!B:B';'09!B:B';'10!B:B';'11!B:B';'12!B:B'}
2.COUNTIF(INDIRECT(TEXT({1;2;3;4;5;6;7;8;9;10;11;12},'00')&'!B:B'),B5)  通过条件计数函数COUNTIF得到B5这个最大值在哪一个工作表出现过
3.MATCH(2,COUNTIF(INDIRECT(TEXT({1;2;3;4;5;6;7;8;9;10;11;12},'00')&'!B:B'),B5),)  通过MATCH函数得到最大值所在工作表是第几个表
4.INDIRECT(TEXT(MATCH(2,COUNTIF(INDIRECT(TEXT({1;2;3;4;5;6;7;8;9;10;11;12},'00')&'!B:B'),B5),),'00')&'!a9:b39')   再次通过INDIRECT函数得到需要的工作表的A9:B39数据区域
5.MMULT(INDIRECT(TEXT(MATCH(2,COUNTIF(INDIRECT(TEXT({1;2;3;4;5;6;7;8;9;10;11;12},'00')&'!B:B'),B5),),'00')&'!a9:b39'),{1;100000})  通过MMULT函数得到数据区域中的数值乘上100000,最后得到数值加上日期,其中包括了最大值以及它的日期
6.MAX(MMULT(INDIRECT(TEXT(MATCH(2,COUNTIF(INDIRECT(TEXT({1;2;3;4;5;6;7;8;9;10;11;12},'00')&'!B:B'),B5),),'00')&'!a9:b39'),{1;100000}))  此条通过MAX提取出最大值和它的日期
7.-B5*10^5  这个得到最大值乘上100000,MAX()-B5*10^5  就得到了最大值对应的日期了
其它的原理相同,包括最小值日期,C列、D列都是这个原理,你自己琢磨一下

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多