【发布时间】:2017-04-28 20:39:45
【问题描述】:
令人惊讶的是,在 Google 和这个网站上搜索答案,并没有找到明显的答案,所以我想我会发布它。
我正在尝试创建一个宏(可能是 UDF),它将二维单元格范围(如 A1:C3)转换为一维范围(一列或一行,如 A1: A10)。当需要二维数组时,这将用于诸如MATCH() 之类的函数,例如在 A1:C3 中查找特定值。但我希望该功能具有通用性,以便我可以将它围绕任何 2D 数组拍打以使其成为 1D。喜欢=INDEX(ARRAYDIMENSION(A1:C1),4) 或=MATCH("hello",ARRAYDIMENSION(A1:C1),0)
我已经想出了一个讨厌的方法;我将数组的每一列(对于A1:C3,即A1:A3,B1:B3,C1:C3)在一个新工作表中的彼此下方(因此A2被复制到新工作表的A2,C3被复制到A9,B1到A4等)
然后我返回我的新数组的引用 (Sheet2!A1:A9) 所以 MATCH() 或 INDEX() 或者现在看起来在那里的任何东西。
它有效,但有一些明显的缺陷;添加新工作表对于宏而言既耗时又丑陋,将各个列相互堆叠并不是最有效的方法。但特别是,宏编辑工作表,因此不能是 UDF(我不认为),这意味着我必须将它用作 Worksheet_Calculate Sub,它比仅仅将它放入任何需要它的公式中更少自包含。
我认为这比较清楚,请帮助/建议最好的方法,我只做了几个星期的 VBA,所以我还不是超级圆滑。
【问题讨论】:
-
您到底想做什么?数组公式是可选的吗?
标签: arrays vba excel user-defined-functions