値の範囲とフィルタの範囲と条件に基づいて値のサブセットを含む範囲を出力するExcel関数を作成しようとしています。 以下の例を使用して、Range( "A2:A5")とRange( "B2:B5")を出力範囲( "C2:C5")に渡したいとします。Excel vba機能:フィルタリング
+ --- + ---- --- + ------- + ------- +
| | | B | C |
+ --- + ------- + ------- + ------- +
| 1 |名前|グループ|出力|
| 2 |ニック| |ニック|
| 3 |マーク| |マーク|
| 4 |マニー| B |運
| 5 |運| |
+ --- + ------- + ------- + ------- +
私がこれまでに以下のコードを書かれています。それは、VBAで正常に動作しますが、私はシート内の関数を呼び出すことはありませ際 D1.function - > = filterFN(A2:A6、B2:B6、D1、 "B")
:
Sub test()
Sheets("Sheet2").Range("D1") = filterFN(Sheets("Sheet2").Range("A1:A6"), Sheets("Sheet2").Range("B1:B6"), Sheets("Sheet2").Range("D1"), "B")
End Sub
Function filterFN(valueRange As Range, filterRange As Range, outputRange As Range, criteriaStr As String)
Dim Arr1() As Variant ' declare an unallocated array.
Dim Arr2() As Variant
Dim Arr3(50) As Variant
Dim i, j As Integer
Arr1 = valueRange
Arr2 = filterRange
For i = 1 To UBound(Arr1, 1)
If Arr2(i, 1) = criteriaStr Then
Arr3(j) = Arr1(i, 1)
j = j + 1
End If
Next i
[outputRange].Resize(UBound(Arr3)) = Application.Transpose(Arr3)
filterFN = Arr3(0)
End Function
事前に多くの感謝