找回密码
 立即注册

QQ登录

只需一步,快速开始

figoyu
金牌服务用户   /  发表于:2015-9-5 19:58  /   查看:11414  /  回复:13
比如:给B2:B10单元格区域命个名name1, 然后在A列插入一列后,name1所代表的单元格区域就是C2:C10?

13 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-9-6 10:29:00
沙发
您好
您可以尝试使用以下设置:

2015-09-06_102734.jpg (20.96 KB, 下载次数: 822)
回复 使用道具 举报
figoyu
金牌服务用户   /  发表于:2015-9-6 10:53:00
板凳
回复 2楼frank.zhang的帖子

这个不行,我是用的ExternalRangeExpression这个类,请问这个类的方法getRange(baseRow, baseColumn)中的baseRow是什么意思?
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-9-6 11:17:00
地板
回复 3楼figoyu的帖子

您好,
您是在什么场景下使用命名单元格区域呢?您是否方便详细描述下呢?
回复 使用道具 举报
figoyu
金牌服务用户   /  发表于:2015-9-6 11:34:00
5#
回复 4楼frank.zhang的帖子

是这样的,比如我给B2:B10单元格区域命个名name1后,在B2:B10这个区域外做了插入行插入列之类的操作,然后我能根据name1这个名字获取到这个单元格区域(这个单元格区域的地址会发生变化,就像Excel中一样)
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-9-6 14:44:00
6#
您好,
自定义了一个test区域,button1会增加一行。
您描述的功能可以参考以下代码:
  1.     <script type="text/javascript">
  2.     $(document).ready(function() {
  3.         var spread = new GcSpread.Sheets.Spread($("#ss").get(0), {
  4.             sheetCount: 3
  5.         });
  6.         var activeSheet = spread.getActiveSheet();

  7.         activeSheet.setValue(0, 0, 1);
  8.         activeSheet.setValue(1, 0, 1);
  9.         activeSheet.setValue(2, 0, 1);
  10.         activeSheet.setValue(0, 1, 1);
  11.         activeSheet.setValue(1, 1, 1);
  12.         activeSheet.setValue(2, 1, 1);
  13.                                 activeSheet.addCustomName("test","Sheet1!$A$1:$B$3", 0, 0);
  14.                                 activeSheet.setFormula(0, 2, "SUM(test)");



  15.         $("#button1").click(function() {
  16.             activeSheet.addRows(0, 1);
  17.         });

  18.     });
  19.     </script>
复制代码

  1. <body>
  2.         <div id="ss" style="width: 500px; height: 300px; border: 1px solid gray">
  3.         </div>
  4.         <input type="button" id="button1" value="button1"/>
  5. </body>
复制代码


2015-09-06_144348.jpg (28.09 KB, 下载次数: 793)
回复 使用道具 举报
figoyu
金牌服务用户   /  发表于:2015-9-6 17:12:00
7#
回复 6楼frank.zhang的帖子

在你这个代码中如何根据test这个名字得到这个单元格区域的地址?
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-9-7 08:59:00
8#
您好,
可以使用getExpression这个函数,可以参考以下代码:
  1.         $("#button2").click(function () {
  2.             var cname = activeSheet.getCustomName("test");
  3.             if (cname instanceof GcSpread.Sheets.NameInfo) {
  4.                 //get CustomName
  5.                 var name = cname.getName();
  6.                 //get Expression
  7.                 var expression = cname.getExpression();
  8.                 //get Expression String
  9.                 var expStr = new GcSpread.Sheets.Calc.Parser().unparse(expression, new GcSpread.Sheets.Calc.ParserContext(true, 0, 0));
  10.                 alert("Name:" + name + ";Expression: =" + expStr);
  11.             }
  12.         });
复制代码
  1. <input type="button" id="button2" value="button2"/>
  2. </body>
复制代码
回复 使用道具 举报
figoyu
金牌服务用户   /  发表于:2015-9-11 17:37:00
9#
回复 8楼frank.zhang的帖子

  1. 麻烦请仔细测试,在test这个名字所代表的单元格区域外部插入行列后,得到的区域地址与excel软件中的结果不一致。比如sheet.addCustomName('test', 'Sheet1!$E$8:$L$15', 0, 0);在$E$8:$L$15这个区域外部插入列1列后,得到test名字代表的区域地址是$E$8:$M$15;而excel软件中的地址应该是$F$8:$M$15。
复制代码
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-9-14 10:47:00
10#
您好,
您的问题,我已经重现会尽快提交给产品组,如果有任何的反馈,我会第一时间通知您。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部