Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 函数从范围返回唯一数组_Excel_Vba - Fatal编程技术网

Excel 函数从范围返回唯一数组

Excel 函数从范围返回唯一数组,excel,vba,Excel,Vba,我正在寻找一种将内存中的选择声明为变量“rRange”的方法,我希望删除重复项并转换为数组 我尝试了以下方法: Function getArray() Dim rRange As Range Dim newRange As Range Dim resultArray() As Variant Set rRange = Selection newRange = rRange.RemoveDuplicates getArray = WorksheetFunction.Tr

我正在寻找一种将内存中的选择声明为变量“rRange”的方法,我希望删除重复项并转换为数组

我尝试了以下方法:

Function getArray()
  Dim rRange As Range
  Dim newRange As Range
  Dim resultArray() As Variant

  Set rRange = Selection
  newRange = rRange.RemoveDuplicates

  getArray = WorksheetFunction.Transpose(newRange)
End Function

但是我在.RemoveDuplicates部分遇到了一个“类型不匹配”错误,在过去的几个小时里,我一直在处理这个问题,只是无法正确处理…建议?

RemoveDuplicates
不会返回值。调用该方法后,您需要重新计算范围的范围。

不确定您的意思,如何重新计算?请记住,我不想实际影响我从中读取数据的电子表格。如果不修改工作表,您的选项会更少。有两个选项:1)创建新工作表,并将范围复制到新工作表。对复制的范围调用
removedupplicates
,将该范围复制到内存数组中,然后删除新工作表。2) 将范围复制到内存阵列中,然后编写自己的
RemoveDuplicates
方法。不幸的是,
RemoveDuplicates
Range
类的成员,
Range
对象总是存储在工作表中。我意识到了这个问题,选择了选项1,谢谢!