0

このリンクと同じ種類の質問があります - オートフィルターの並べ替え基準を取得し、2 番目のシートに適用します

リンクをたどりましたが、必要な出力を取得できません。

列の値の 1 つ (例: 列 10) でシート 1 (必要に応じて変更できます) でフィルター処理された条件を設定し、フィルター条件に基づいて表示される列 10 のデータに基づいて、シート 1 のデータでシート 2 をフィルタリングします。

示されているように、それらの多くが ARRAY で静的な値を使用しているのを見てきましたが、シート 1 で値を動的に変更し、シート 2 でフィルタリングするにはどうすればよいでしょうか。お知らせ下さい

.AutoFilter Field:=10, Criteria1:=Array("value1", "value2"), Operator:=xlFilterValues

4

2 に答える 2

0

私はあなたがこのようなものが欲しいと思います:

Sub tgr()

    Dim wsData As Worksheet
    Dim wsCriteria As Worksheet
    Dim arrCriteria As Variant

    Set wsData = Sheets("Sheet2")
    Set wsCriteria = Sheets("Sheet1")
    arrCriteria = Application.Transpose(wsCriteria.Range("J4", wsCriteria.Range("J4").End(xlDown)).Value)

    With wsData.UsedRange
        .AutoFilter 10, arrCriteria, xlFilterValues
    End With

    Set wsData = Nothing
    Set wsCriteria = Nothing
    If IsArray(arrCriteria) Then Erase arrCriteria

End Sub
于 2013-08-09T17:08:44.493 に答える
0

VBA で配列を定義するとどうなるでしょうか。

Dim CritArray(2) as String
 CritArray(0) = Cells(1,1).Value
 CritArray(1) = Cells(2,1).Value

次に、コード行を編集するだけです:

.AutoFilter Field:=10, Criteria1:=Array(CritArray(0),CritArray(1)), Operator:=xlFilterValues

条件の数 (またはその場所) はわかりませんが、そのように追加/編集できます。これは、基準が 2 つしかないという事実に基づいていますが、もちろん拡大することもできます。

于 2013-08-09T17:09:44.150 に答える