找回密码
 立即注册

QQ登录

只需一步,快速开始

web_chuan
金牌服务用户   /  发表于:2023-3-9 17:01  /   查看:1913  /  回复:8
1金币
本帖最后由 Lynn.Dou 于 2023-3-14 11:42 编辑

image.png563098449.png
1.ssjson (115.38 KB, 下载次数: 247)

最佳答案

查看完整内容

注:理论知识较长,解决方案可以直接看文章末尾。 ----------------------------------------------------------- 结合附件的示例文件,先理解两个概念: 1、相对引用 和 绝对引用 2、公式调整 下图说明 相对引用 和 绝对引用 的区别。 一、 在微软Excel中, 对于不跨sheet的公式(相对引用写法)进行排序时,单元格实际已经做了排序,只是因为"公式调整"原因,表现为结果未发生变化。 验证步骤: 打开1.x ...

8 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-9 17:01:48
来自 9#
本帖最后由 Lynn.Dou 于 2023-3-13 15:50 编辑

注:理论知识较长,解决方案可以直接看文章末尾。
-----------------------------------------------------------

结合附件的示例文件,先理解两个概念:
1、相对引用 和 绝对引用
2、公式调整

下图说明 相对引用 和 绝对引用 的区别。
image.png639052428.png

一、
微软Excel中,
对于不跨sheet的公式(相对引用写法)进行排序时,单元格实际已经做了排序,只是因为"公式调整"原因,表现为结果未发生变化。
验证步骤:
      打开1.xlsx,选择B4:B5区域,设置升序/降序(如弹出弹窗,勾选给当前选择区域排序),观察结果。
您会看到,此时排序结果并未发生变化。

但实际上,排序的逻辑已经被执行了,如下步骤测试:
      打开1.xslx文件,选择B10:B12区域(B10为公式,B11 B12为值),设置升序,观察结果。
您会看到,此时的排序结果为 1 2 0,与预期的结果并不一致,反而值还改变了。
这是由于 相对引用+公式调整 的原因。

如何理解公式调整?如下步骤测试:
      打开1.xslx文件,选择B18单元格,你会看到公式为 "=A18"。ctrl+c 复制,并粘贴到其他单元格如E18,然后ctrl+v粘贴。
你会看到,此时E18的值为2,公式为 "=D18"。
明明是做了复制粘贴操作,为什么E18的公式不是 "=A18",值不是1呢?
这就是因为公式做了自动调整,在相对引用的影响下,公式会根据周围单元格的位置做出调整。

如果公式用了绝对引用,那么公式就不会调整了,筛选结果也就能达到预期了。
验证步骤:
    打开1.xslx文件,选择B23:B5,设置降序。你会看到,此时筛选结果符合预期了。

(更多 绝对引用 相对引用的概念,您可以网上搜索 Excel绝对引用相对引用 学习了解)

二、
在Excel中,
对于跨sheet 相对引用 公式,Excel在筛选结果上,表现的像绝对引用了。即不会做公式调整,筛选结果符合预期。(也即是您帖中提供的ssjson文件使用场景)
但这样的设计其实是有问题的,举个例子来说明下。
     打开附件的2.xlsx, 选择B4:B6区域,设置降序,观察排序结果。
你会看到,排序结果不仅不是 9 7 5,反而是 7 7 7这种看似毫无逻辑的值。
原因就是 不跨sheet的部分进行了公式调整,跨sheet部分没有做公式调整,二者一块用就出现这个问题了。

三、
SpreadJS不清楚微软Excel为什么这样设计,如果混合使用时容易出现难以判断的错误,它认为Excel的这种设计不合理。
所以 对于跨sheet 和 不跨sheet 两种场景下统一使用了相对引用方案,即表现为您问题中结果 - 筛选后结果并未变动。

对于解决方案:
将您文件中公式相对引用修改为绝对引用即可,如下图。
image.png282848204.png
附件为修改后的ssjson文件,您可以实际导入测试下。

update-1.ssjson

115.4 KB, 下载次数: 235

2.xlsx

10.39 KB, 下载次数: 208

1.xlsx

9.99 KB, 下载次数: 235

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-9 18:12:37
2#
您好,您期待的排序结果是什么呢?
这边也在微软Excel中测试了下,发现排序结果也并不是依据公式值进行升序/降序展示的。
您可以实际测试下,
然后对比微软Excel排序结果详细描述下您的需求,这边再进一步调研看看。
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-3-9 18:22:59
3#
Lynn.Dou 发表于 2023-3-9 18:12
您好,您期待的排序结果是什么呢?
这边也在微软Excel中测试了下,发现排序结果也并不是依据公式值进行升 ...

问题.zip (3.08 MB, 下载次数: 226)
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-9 18:38:22
4#
WPS排序时有个复选框,如下图。是否勾选会影响到最终的排序结果。

image.png267802428.png
您录制个WPS排序动图,描述下您期待的排序结果,这边需要依据您的需求来调研SpreadJS问题原因。
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-3-9 19:02:22
5#
Lynn.Dou 发表于 2023-3-9 18:38
WPS排序时有个复选框,如下图。是否勾选会影响到最终的排序结果。

现在就想要正确的排序结果,跨sheet 是错误的,不跨是对的 如何解决?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-10 09:27:28
6#
本帖最后由 Lynn.Dou 于 2023-3-14 11:38 编辑

需求已了解,已将此问题记录下来进一步调研原因,待有进展会在贴中通知您。
本贴先做保留处理。(SJS-17356)
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-3-10 09:33:52
7#
Lynn.Dou 发表于 2023-3-10 09:27
需求已了解,已将此问题记录下来进一步调研原因,待有进展会在贴中通知您。
本贴先做保留处理。

https://gcdn.grapecity.com.cn/showtopic-44735-1-709.html

这个帖子和我的问题是一样的,都这么长时间了还没解决吗?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-10 10:56:36
8#
本帖最后由 Lynn.Dou 于 2023-3-10 11:06 编辑

目前问题已在调研中,有进展会第一时间贴中通知您的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部