0

Excel の組み込みフィルターやピボット テーブル関数を使用せずに、vba を使用していくつかの結果を抽出したいと考えています。次の例を考えてみましょう: 列 A と B のデータが与えられた場合、C1 に "a" を入力し、vba を使用して列 B から対応するすべての値 (1,3,5) を列 D に取得できるようにしたいと考えています。「b」と入力すると、2、6 などになります。ありがとう。 ここに画像の説明を入力 ここに画像の説明を入力

4

3 に答える 3

2
Sub GenerateMatches()

With ActiveSheet
FinalRowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

InputLetter = ActiveSheet.Cells(1, 3)
NextRow = 1

For i = 1 To FinalRowA
If .Cells(i, 1) = InputLetter Then
.Cells(NextRow, 4) = .Cells(i, 2)
NextRow = NextRow + 1
End If

Next i

End With

End Sub

明らかに、これをより動的で高速にすることができますが、これで仕事が完了するはずです。

于 2013-09-13T23:36:48.657 に答える
0

フィルターやピボットを使いたくないというあなたの気持ちは理解できます。しかし、フォーミュラ?

数式で何かが可能である場合、なぜ VBA を使用するのでしょうか?

この配列数式を貼り付け、+ +をCell D1押して下に引きます。CTRLSHIFTENTER

=IF(ISERROR(INDEX($A$1:$B$7,SMALL(IF($A$1:$A$7=$C$1,ROW($A$1:$A$7)),ROW(1:1)),2)),"",INDEX($A$1:$B$7,SMALL(IF($A$1:$A$7=$C$1,ROW($A$1:$A$7)),ROW(1:1)),2))

スクリーンショット ここに画像の説明を入力

于 2013-09-14T05:18:46.000 に答える