目次:
ビデオ: エクセルVBA 配列について 2024
配列式は、Excelの最も強力な機能の1つです。配列の数式に精通しているなら、配列を返すVBA関数を作成できることを知ってうれしいです。
月の名前の配列を返す
簡単な例から始めましょう。 MonthNames関数は、月の名前を推測した12要素の配列を返します。
関数MonthNames()MonthNames = Array( "January"、 "February"、 "March"、 "April"、 "May"、 "June"、 "July"、 "August"、 "September" End Function
ワークシートでMonthNames関数を使用するには、12セルの配列式としてMonthNames関数を使用する必要があります。たとえば、範囲A2:L2を選択し、 = MonthNames() と入力します。次に、選択した12のすべてのセルに配列式を入力するには、Ctrl + Shift + Enterを押します。結果を確認してください。
<! --1 - > MonthNames関数を使用して12要素配列を返します。月の名前を列に表示する場合は、列内の12個のセルを選択し、この配列の式を使用します。
= TRANSPOSE(MonthNames())
配列から1か月を選択することもできます。配列の4番目の要素、4月を表示する式(配列式ではありません)です。
ソートされたリストを返す
ソートされた順序で別のセル範囲に表示する名前のリストがあるとします。ワークシート機能を持たせるのはいいのではないでしょうか?
このカスタム関数は、以下のように機能します。引数として単一列の範囲のセルをとり、ソートされたセルの配列を返します。範囲A2:A13にはいくつかの名前が含まれています。範囲C2:C13には、このマルチセル配列式が含まれています。 Ctrl + Shift + Enterを押して数式を入力する必要があることを覚えておいてください。
<! - 3 - >
ソートされた範囲を返すカスタム関数の使用。 ソートされた関数のコードは次のとおりです。ソートされた関数(Rangeとしての範囲)Dimソートされたデータ(Variantとしての)Dimセルの範囲Dim Temp As Variant、i As Long、 (長さが1バイトのNonEmptyは長くなる)データをソートされたデータに転送する。セル内の各セルがNotEmpty(セル)でない場合、NonEmpty = NonEmpty + 1 ReDimはSortedDataを保持する。 (i)> SortedData(j)Then Temp = SortedData(j)SortedData(j)= SortedData(i)SortedData(i)配列をソートするには、 (i)= Temp End If Next j Next i '配列を転置して返すSorted = Application。Transpose(SortedData)End Function
Sorted関数は、SortedDataという名前の配列を作成することから始まります。この配列には、引数の範囲内のすべての空白以外の値が含まれます。次に、バブルソートアルゴリズムを使用してSortedData配列がソートされます。配列は水平配列なので、関数によって返される前に転置する必要があります。
Sorted Functionは、単一の列または行にある限り、任意のサイズの範囲で動作します。ソートされていないデータが行内にある場合は、ExcelのTRANSPOSE関数を使用して並べ替えられたデータを水平方向に表示する必要があります。例:
= TRANSPOSE(ソート済み(A16:L16))