【问题标题】:Excel - Getting the Top 5 data of a column and their matching title but produces duplicatesExcel - 获取列的前 5 个数据及其匹配的标题,但会产生重复项
【发布时间】:2019-05-07 01:28:48
【问题描述】:

我正在开发一个使用 PHP(以 CodeIgniter 作为框架)制作的 Web 应用程序,它应该生成一个 Excel 文件报告作为数据摘要。

我正在使用PHPSpreadsheet作为库来生成.xlsx文件,一切都成功了。


我能够在特定范围的单元格中显示列的前 5 个值,即。 文章数量最多的前 5 个出版物

使用代码 =LARGE(ColumnOfTheDataRange , NumeralValue) -- 我能够获得我想要的前 5 名


然后,在这前 5 个数据的左侧,我需要显示匹配的 Publication Names / Publications。我可以使用函数=INDEX(PublicationNamesCellRange, MATCH(CellOfTheMatchingData, ColumnOfTheDataCellRange, 0))


现在,请注意前 5 个数据列(右)中有多个文章计数 54,它们应该属于 2 个不同的出版物。问题是,我应该使用什么代码或技术来生成唯一的出版物名称,这样它就不会重复出版物名称 E,因为在原始 excel 文件中,出版物名称 E是第一个有54匹配数据的?

【问题讨论】:

  • 这里有几个帖子显示了解决方案 - 我利用了它们,所以搜索一下。即使您没有找到它们,您也可以查看 large() 和 aggregate() 但 aggregate() 取决于 excel 版本。
  • 你好先生@SolarMike,美好的一天!在发布此之前,我确保没有可用的解决方案,因为过去 3 天我一直在寻找一个。如果有,请给我链接好吗?或将此帖子标记为重复?至于您关于aggregate() 功能的提示,正在寻找它,非常感谢您的想法!
  • 我很惊讶你没有找到相关的帖子,因为我明确表示这就是我找到解决方案的方式......
  • 为什么不直接使用数据透视表?
  • 你好@MichalRosa 美好的一天!制作我连接它们的那两个数据透视表?

标签: php excel codeigniter phpspreadsheet


【解决方案1】:

这是我最终使用的,根据您的情况进行编辑。

【讨论】:

  • 您好,先生!非常感谢您,但仍在测试中,请问您的示例中ROW($1:$30) 代码的目的是什么?
  • 我测试了更多的东西,仍然对ROW($1:$30)的目的感到困惑,应该是静态的先生吗?
  • hellosir @SolarMike 一些单元格正在生成错误消息#NUM!
  • 那么你必须有一个不正确的范围或参数,这适用于我的真实工作表中的 5 组不同的数据,并且它适用于该示例,因为我必须重置名称。
  • 太棒了!测试了所有内容并在ROW($1:$30) 部分进行了调整,根据要包含的最大或最高单元格地址更改 $30 例如列的范围达到 E99 然后将代码调整为ROW($1:$99) 然后我可以获取不同的出版物名称,不再重复!非常感谢@SolarMike 先生 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2020-12-07
  • 2016-10-08
  • 2019-03-25
相关资源
最近更新 更多