ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4184|回复: 14

[求助] VSTO 使用自定义函数如何返回多个数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-4-16 09:20 | 显示全部楼层 |阅读模式
问题描述:
使用C#写了excel的自定义函数。比如,输入点名,要返回时间和数据。
现在自定义函数在自动化服务器中显示正常。查了msdn说EXCEL的UDF不支持ref。out之类的参数,只能是返回数组。
工程要求把该单元格调用的参数记录下来,所以打算把自定义公式及参数赋给range的formula,
但是这样不能显示返回数组。
前期的尝试:
如果只返回单个字符串,那么range保存的公式和显示的数据都是对的。
请教大牛,多个返回值到底是怎么处理的。


TA的精华主题

TA的得分主题

发表于 2014-4-16 09:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
可以直接返回数组,以数组公式的方式输入单元格
也可以通过异步方式,在除了公式所在单元格的其他单元格插入数据

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-16 09:35 | 显示全部楼层
大牛,数组公式的方式是怎么调用,方便的话给个参考文档链接,非常感谢。
vsto的参考文档太少了,自己没有找到。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-16 09:42 | 显示全部楼层
alphy 发表于 2014-4-16 09:28
可以直接返回数组,以数组公式的方式输入单元格
也可以通过异步方式,在除了公式所在单元格的其他单元格插 ...

请问为了保持输入参数,把自定义的内容赋给range的formula的思路是否合理?

TA的精华主题

TA的得分主题

发表于 2014-4-16 10:21 | 显示全部楼层
tpriwwq 发表于 2014-4-16 09:35
大牛,数组公式的方式是怎么调用,方便的话给个参考文档链接,非常感谢。
vsto的参考文档太少了,自己没有 ...

单元格里面公式和参数输入以后,回车。然后选择以公式所在单元格为首的区域,按F2,再同时按Ctrl+Shift+Enter
选的区域行数列数要大于等于返回的数组,否则数组不显示或显示不完全。
EXCEL的帮助文件里面有,

TA的精华主题

TA的得分主题

发表于 2014-4-16 10:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tpriwwq 发表于 2014-4-16 09:42
请问为了保持输入参数,把自定义的内容赋给range的formula的思路是否合理?

保持输入参数有什么用吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-16 10:30 | 显示全部楼层
alphy 发表于 2014-4-16 10:22
保持输入参数有什么用吗

对,保存输入参数,可以方便用户下次打开表格时看到之前的输入参数,避免或减少重复输入。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-16 11:15 | 显示全部楼层
刚才自己查了下,要存数组公式,好像要用到range.FormulaArray属性,
=GetSnapshot("30.30.30.189","ET.N1ES_W_G",1)
用了这个属性后,在excel看到自定义公式带了{},
但是显示的还只有自定义函数返回的实时数据,没有显示对应的时间

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-16 11:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
使用数组公式需要 三键确认,现在正常了,要显示看样子是要先选择需要的区域,否则只能选择一个

TA的精华主题

TA的得分主题

发表于 2014-4-16 11:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tpriwwq 发表于 2014-4-16 11:15
刚才自己查了下,要存数组公式,好像要用到range.FormulaArray属性,
=GetSnapshot("30.30.30.189","ET.N1 ...

你的Range按个是不是只有一个单元格,Range要写成区域,格子数等于数组的大小
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-22 15:06 , Processed in 0.042990 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表