热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VBA评估返回值范围的函数和数组公式

如何解决《VBA评估返回值范围的函数和数组公式》经验,为你挑选了1个好方法。

假设我想使用Evaluate函数来计算返回一系列值的数组公式.例如,我尝试在Sheet2的有序列表中获取索引(使用Excel函数MATCH)!A:A表示Sheet1中的每个值!A:A.我想把索引放在B栏.

Dim sh as Worksheet
Set sh = Sheets("Sheet1")
sh.Range("B1:B10").Value = sh.Evaluate("=MATCH(A1:A10,Sheet2!A:A)")

我运行代码,我得到一列重复值 - 值等于第一个元素的索引.这是不正确的.

当我通过在工作表{= MATCH(A1:A10,Sheet2!A:A)}中放置数组公式来尝试相同时,它可以正常工作并返回每个元素的正确索引.

所以我的问题:如何使用Evaluate函数返回一系列值?



1> Ron Rosenfel..:

有趣的问题.我无法使用MATCH函数返回使用VBA Evaluate的数组.但是,以下修改似乎可行,使用索引函数中的row参数的零(0)返回所有行.另请注意,我将match_type参数添加到Match函数.

sh.Range("B1:B10").Value = sh.Evaluate("=INDEX(MATCH(A1:A10,Sheet2!A:A,0),0,1)")


当你在这里使用Evaluate时,你总是需要强制一个自然不是数组公式的函数.注意,您可以简单地使用INDEX(函数,没有任何显式参数)或IF(ROW(范围),函数)构造.
推荐阅读
author-avatar
闪亮登台
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有