目录:
视频: 01 錄製巨集與建立按鈕 2024
数组公式是Excel最强大的功能之一。如果您熟悉数组公式,那么您将很高兴知道您可以创建返回数组的VBA函数。
返回一个月份名称数组
让我们从一个简单的例子开始。 MonthNames函数返回12个元素的数组 - 你猜对了 - 月份名称。函数MonthNames()MonthNames = Array(“January”,“February”,“March”,_“April”,“May”,“June”,“July”,“August”,_“September”,“十月“,”十一月“,”十二月“)End Function
要在工作表中使用MonthNames函数,必须将其输入为12单元格数组公式。例如,选择范围A2:L2并输入
= MonthNames() 。然后按Ctrl + Shift + Enter在所有12个选定的单元格中输入数组公式。检查结果。 <! --1 - >
使用MonthNames函数返回12个元素的数组。 如果要将月份名称显示在列中,请选择列中的12个单元格并使用此数组公式。 (不要忘记按Ctrl + Shift + Enter键输入。)= TRANSPOSE(MonthNames())
您也可以从数组中选出一个月份。下面是一个公式(不是数组公式),它显示了数组的第四个元素:April。
<! (999)返回一个排序的列表
假设你有一个你想在另一个单元格范围内按排序顺序显示的名字列表。有一个工作表函数为你做这件事不是很好吗?这个自定义函数只是这样做的:它把一个单列的单元格区域作为它的参数,然后返回这些单元格的排序数组。范围A2:A13包含一些名称。范围C2:C13包含这个多单元阵列公式。 (请记住,您必须按Ctrl + Shift + Enter来输入公式。)
使用自定义函数返回排序后的范围。
= Sorted(A2:A13)
这里是Sorted函数的代码: Function Sorted(Rng As Range)Dim SortedData()As Variant Dim Cell As Range Dim Temp As Variant,i As Long, j As Long Dim NonEmpty As Long'将数据传递给SortedData对于每个单元格,如果不是空(单元格)则NonEmpty = NonEmpty + 1 ReDim保留SortedData(1到非空)SortedData(NonEmpty)=单元格。 (i)> SortedData(j)Then Temp = SortedData(j)SortedData(j)= SortedData(i)SortedData(j)SortedData(j)SortedData(j)SortedData(i)SortedData (i)= Temp End If Next j Next i'转置数组并返回Sorted = Application。Transpose(SortedData)End FunctionSorted函数首先创建一个名为SortedData的数组。该数组包含参数范围中的所有非空值。接下来,使用冒泡排序算法对SortedData数组进行排序。由于该数组是一个水平数组,因此必须在函数返回之前进行转置。
Sorted函数可以处理任何大小的范围,只要它在单个列或行中即可。如果未排序的数据是连续的,那么您的公式需要使用Excel的TRANSPOSE函数来水平显示排序后的数据。例如:
= TRANSPOSE(Sorted(A16:L16))