找回密码
 立即注册

QQ登录

只需一步,快速开始

miyazhong

注册会员

20

主题

45

帖子

157

积分

注册会员

积分
157
miyazhong
注册会员   /  发表于:2022-6-1 18:58  /   查看:1519  /  回复:6
1金币
本帖最后由 Derrick.Jiao 于 2022-6-28 12:17 编辑

你好,
有两个sheet,分别交SheetA, SheetB,  sheetB中的某个单元格设置了公式规addFormulaRule, 比如公式是'SheetB'!$C10<>'SheetA'!C12,
此时是正常的,但是对sheetA进行了排序之后,原来的C12由于排序就到了C14, 这个时候formulaRule的公式还是'SheetA'!C12, 而不是'SheetA'!C14,导致验证失败。


请问这个问题如何处理?

最佳答案

查看完整内容

更新进展: 数据验证对于排序功能的设计目前没有更好的方案了, 如果您是想校验两个单元格的值是否相等,可以考虑下通过监听事件来实现。 示例代码如下:

6 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-1 18:58:31
来自 7#
更新进展:
数据验证对于排序功能的设计目前没有更好的方案了,
如果您是想校验两个单元格的值是否相等,可以考虑下通过监听事件来实现。
示例代码如下:

  1. // 判断D2的值是否与B2一致
  2. sheet.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, args) {
  3.     var value2 = args.editingText;
  4.     var row = args.row;
  5.     var col = args.col;
  6.     if(row === 1 && col === 3) {
  7.         var value1 = sheet.getValue(row, col);
  8.         var value2 = GC.Spread.Sheets.CalcEngine.evaluateFormula(sheet, "=B2", 0, 0);
  9.         //比较B2单元格的值
  10.         if(value1 === value2) {
  11.             // do something
  12.             console.log("一致");
  13.         } else {
  14.             // do something
  15.             console.log("不一致")
  16.             //清空D2单元格的值并进入编辑状态
  17.             sheet.setValue(row, col, null);
  18.             setTimeout(function() {
  19.                 sheet.setSelection(row, col, 1, 1)
  20.                 sheet.startEdit()
  21.             }, 0)
  22.         }
  23.     }
  24. });
复制代码
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-2 10:21:30
2#
您好,
数据验证公式验证的是单元格位置,不会随排序变化,这一点也是与Excel一致的,您可以在Excel中实际测试下。
回复 使用道具 举报
miyazhong
注册会员   /  发表于:2022-6-2 10:31:19
3#
Lynn.Dou 发表于 2022-6-2 10:21
您好,
数据验证公式验证的是单元格位置,不会随排序变化,这一点也是与Excel一致的,您可以在Excel中实际 ...

那如果确实有这样的需求,公式验证就无法实现了? 是否有其他可替换的实现方法呢?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-2 14:15:21
4#
前面提到了,数据验证-公式验证本身设计就是与排序无联系的,
从数据验证角度来看,关于您的需求这边暂时没有合适的方案。
您可以结合实际业务情况详细下您的需求,如使用数据验证是想实现什么样的效果,
这边再调研下看除了数据验证有没有其他方案。
回复 使用道具 举报
miyazhong
注册会员   /  发表于:2022-6-2 14:50:40
5#
Lynn.Dou 发表于 2022-6-2 14:15
前面提到了,数据验证-公式验证本身设计就是与排序无联系的,
从数据验证角度来看,关于您的需求这边暂时 ...

有两个sheet, 分别SheetA, SheetB, SheetA中的一个单元格C4的数据需要和SheetB的一个单元格E7的数据进行验证,必须相等,否则报错。 在SheetA中,会进行排序、插入、删除等操作。如何实现:

1. 两个表之间的验证;
2、排序后,两表之间的验证不受影响, - 这一步有问题。
如果不使用公式条件验证,有什么方法,可以实现数据的比较, 同时,在两个sheet的数据发生变化的时候,数据的比较能够保持一致。

image.png622224120.png

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-2 16:58:13
6#
本帖最后由 Derrick.Jiao 于 2022-6-28 12:17 编辑

需求已了解,这边需要时间调研下解决方案,待有进展会在本贴回复您。(SJS-13387)
本贴先做保留处理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部