通过INDEXOFARRAY和INARRAY,实现EXCEL的VLOOKUP效果,但是一直刷不出数据

大家好,请教个问题。

我尝试着通过INDEXOFARRAY和INARRAY函数,实现EXCEL的VLOOKUP函数效果,但是页面一直刷不出数据。

附件中上传了压缩包,里面的2个模板只有一个区别。

【标签页:月份对比】,有6个单元格写了【跨标签页的引用公式】,另外一个模板没有写。

通过单元格公式:INDEXOFARRAY( '1月'!C4, INARRAY(B4,'1月'!B4) ),引用其他标签页中的数据,进行月份对比。

没有写【跨标签页取数公式的模板】,大概几十秒就能生成数据。

另外一个模板,10多分钟都生成不了数据,并且【任务管理器中的OpenJDK Platform binary】CPU消耗达到90%以上。

用FineReport V10和V11的最新版本,都是这种情况。

是我的公式写得有问题吗?有什么办法改进?

真实业务场景中,【每个月的收入、费用、利润】计算逻辑复杂,都是在页面上通过N个字段推导出来的。

不能在【SQL数据集】中一步到位,所以才会通过【跨标签页取数】的方式来操作。

客户利润表_内置数据.zip

image.png

image.png

image.png

image.png

image.png

FineReport 冥王星 发布于 2022-1-12 16:16 (编辑于 2022-1-23 08:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共9回答
最佳回答
0
free_zzLv6中级互助
发布于2022-1-13 14:28(编辑于 2022-1-13 15:18)

可能是因为内置数据的原因,我打开你的卡顿模板也挺快的十秒左右

你可以试试不跨sheet页取数

Mu1_汇总数据.select(收入,月份='01月' && 客户简称=B4)

试试这样会不会快点

image.png

  • 冥王星 冥王星(提问者) 同学好。 你把那一行的表间公式全部填上去,看看刷新速度怎么样,我之前只维护了【6个单元格】。 我不能直接从【数据集】中取数。 因为真实业务场景中,【每个月的收入、费用、利润】计算逻辑复杂,都是在页面上通过N个字段推导出来的。 不能在【SQL数据集】中一步到位,所以才会通过【跨标签页取数】的方式来操作。
    2022-01-13 14:46 
  • 冥王星 冥王星(提问者) 同学好。 您电脑上预览【卡顿模板】,点击【查询】按钮,10秒钟左右能生成出来数据吗?
    2022-01-13 14:48 
  • free_zz free_zz 回复 冥王星(提问者) 是的
    2022-01-13 14:51 
  • 李荣超 李荣超 回复 冥王星(提问者) 可以的
    2022-01-13 15:07 
  • 冥王星 冥王星(提问者) 回复 free_zz 能否发个截图出来? 看看【卡顿模板】的【月份对比标签页】,【收入】下面的6个月份单元格,是否跨表取数成功。 我还是有点不敢相信,觉得同学可能是刷错模板了。 因为我这儿,【正常模板】大概几十秒能生成数据;【卡顿模板】几十分钟都是显示【三条竖线杆在跳跃中】。
    2022-01-13 15:13 
最佳回答
0
Bell贝尔Lv4见习互助
发布于2022-1-12 16:18(编辑于 2022-1-12 16:21)
  • 冥王星 冥王星(提问者) 同学好。 我是没办法啊。 【收入】、费用、利润】列字段计算逻辑太复杂了,没办法写在一个【SQL数据集】中。 这已经是我简化过后,将核心问题发出来求助了。 同学能否提供点思路?
    2022-01-12 16:28 
最佳回答
0
锦崽Lv4见习互助
发布于2022-1-13 10:11

是要求收入最大的月份吗

  • 冥王星 冥王星(提问者) 同学好。 不是求【收入最大的月份】。 【标签页:月份对比】中的数据,是通过【表间公式】从后面的那【12个月份标签页】中引用过来的。 类似于Excel中的VLOOKUP函数效果。 我只写了6个单元格的【表间公式】,其他的单元格还没有写【表间公式】,报表刷新的时候几十分钟都出不了数据。如果把6个单元格的【表间公式】清空,几十秒钟就能生成数据。 不清楚是我的【表间公式】写得有问题,还是有什么地方没有配置好,所以过来发帖求助 。
    2022-01-13 10:19 
最佳回答
0
Z~/Lv6初级互助
发布于2022-1-13 11:20(编辑于 2022-1-13 11:21)

你可以考虑一下横向拓展月份。

这样就不用写表间公式了,report的设计思路和EXCEL的设计思路还是要区别开。

  • 冥王星 冥王星(提问者) 同学好。 真实业务场景中,【每个月的收入、费用、利润】计算逻辑复杂,都是在页面上通过N个字段推导出来的。 不能在【SQL数据集】中一步到位,所以才会通过【跨标签页取数】的方式来操作。
    2022-01-13 11:27 
最佳回答
0
Rose_RubyLv6初级互助
发布于2022-1-14 16:02

在数据库写视图预生成数据?

  • 冥王星 冥王星(提问者) 同学好。 【每个月的收入、费用、利润】计算逻辑复杂,都是在页面上通过N个字段推导出来的。那些字段我都删除了,没有体现出来。 不能在【SQL数据集】中一步到位,所以才会通过【跨标签页取数】的方式来操作。 你能下载附件到自己电脑上试一下吗?看看那个【卡顿模板】是否有同样的现象? 楼上有两个同学,在自己的环境上没有出现【卡顿现象】。 但是我这边,无论是V10还是V11,都是一样的卡顿。
    2022-01-14 16:07 
  • Rose_Ruby Rose_Ruby 回复 冥王星(提问者) 不对,你放内置数据集就缺少了数据库的交互,他们不卡是因为直接内置的数据,没有再次经过数据库的查询运算
    2022-01-14 16:36 
  • 冥王星 冥王星(提问者) 回复 Rose_Ruby 同学好。 附件压缩包中的【内置数据模板】,其中【带表间公式的_卡顿模板】,在我电脑上也是长时间刷不出数据。 已经排除了【数据库交互的影响】。 所以想试试你这边的环境,看看是什么情况。
    2022-01-14 16:47 
  • Rose_Ruby Rose_Ruby 回复 冥王星(提问者) 跑的是挺慢的,页面的计算太多了,而且还几个工作簿
    2022-01-14 17:42 
  • Rose_Ruby Rose_Ruby 回复 冥王星(提问者) 上Doris?数据录入后会按照规则预先聚合好数据
    2022-01-14 17:45 
最佳回答
0
sunnydLv3见习互助
发布于2022-1-14 17:12

使用etl工具或者存储过程去做一些中间表

  • 冥王星 冥王星(提问者) 同学好。 用ETL、存储过程搭中间表的话,太麻烦了。计算逻辑复杂,需要写太多代码,后期不方便维护;而且不能生成实时数据。 附件压缩包中的【内置数据模板】,其中【带表间公式的_卡顿模板】,在我电脑上也是长时间刷不出数据。 因为是用的【内置数据集】,已经排除了【数据库SQL交互的影响】。 如果方便的话,麻烦下载到你的环境,预览--查询,看看是什么情况。
    2022-01-14 17:27 
最佳回答
0
小白新手Lv6初级互助
发布于2022-1-17 10:25

你直接应用数据集里面的数据不行吗,为什么要引用其他sheet页里面的数据?

  • 冥王星 冥王星(提问者) 同学好。 直接在数据集中写SQL太麻烦了。计算逻辑复杂,需要写太多代码,后期不方便维护。 有些逻辑,是在页面上进行判断的。 附件压缩包中的【内置数据模板】,其中【带表间公式的_卡顿模板】,在我电脑上也是长时间刷不出数据。 因为是用的【内置数据集】,已经排除了【数据库SQL交互的影响】。 如果方便的话,麻烦下载到你的环境,预览--查询,看看是什么情况,谢谢。 12个月份工作簿,每个工作簿大概2千行数据。 感觉数据量,真的不大。
    2022-01-17 10:53 
最佳回答
0
shirokoLv6资深互助
发布于2022-1-17 10:31

很复杂也要尽量在sql做,速度的差距是非常大的。

--

折中一点的办法你把每个sheet计算好的内容都提交到数据库存起来,然后另外的sheet去取

  • 冥王星 冥王星(提问者) 同学好。 直接在数据集中写SQL太麻烦了。计算逻辑复杂,需要写太多代码,后期不方便维护。 有些逻辑,是在页面上进行判断的。 附件压缩包中的【内置数据模板】,其中【带表间公式的_卡顿模板】,在我电脑上也是长时间刷不出数据。 因为是用的【内置数据集】,已经排除了【数据库SQL交互的影响】。 如果方便的话,麻烦下载到你的环境,预览--查询,看看是什么情况,谢谢。 12个月份工作簿,每个工作簿大概2千行数据。 感觉数据量,真的不大。
    2022-01-17 10:53 
  • shiroko shiroko 回复 冥王星(提问者) 你这个报表真的想用吗,我就开了你这个正常的,打开要好久,切换tab也能等很久,你们业务人员真的能接受?要么还是从底层重新弄,结合sql和分成多个表。
    2022-01-17 13:31 
  • shiroko shiroko 回复 冥王星(提问者) 如果你觉得现在的模式可以的话,你可以这样:把需要用到的sheet的数据再对应sheet再显示一遍(然后隐藏掉),这样就不会涉及到跨sheet取数,都是在自己sheet内部取数
    2022-01-17 13:32 
  • 冥王星 冥王星(提问者) 回复 shiroko 同学好。 在你的电脑上,【正常模板】,预览、查询,大概多长时间生成数据? 切换Tab页需要时间加载,这个是产品的设计机制。 一般情况下,有几百行的表,我们会直接导出到Excel再切换Tab页。
    2022-01-17 14:27 
最佳回答
0
omydaidaiLv5见习互助
发布于2022-1-21 09:55

可以用kettle把数据清洗好,bi现在也有etl工具,可以去试试

  • 冥王星 冥王星(提问者) 同学好。 用ETL的话,就不是实时数据了。
    2022-01-21 10:03 
  • 12关注人数
  • 1550浏览人数
  • 最后回答于:2022-1-23 08:15
    请选择关闭问题的原因
    确定 取消
    返回顶部