0

現在取り組んでいるプロジェクトの助けを求めています。さまざまなステータスに達した部品の数を表示するプレゼンテーション ワークシートを作成しています。IE、部品が期限切れ、部品に契約が必要、部品に設計が必要など。合計で、個々の部品が特定の基準に基づいている可能性があるという 8 つの異なるステータスがあります。特定の部品がどのステータスにあるかを示すトグルをすでに作成しており、そのトグルを使用してディスプレイにカウントを表示しています。

現在、ドロップダウンに基づいて切り替えるように表示をコーディングしているため、ワークグループによってデータが変更されます。私がやりたいのは、クリックするとクリックされたセルのカウントを見て、それに関連する特定の部分の下に表示するコードを作成することです。たとえば、グループ 1 のステータス「パーツはデザイン付き」のセルに 5 のカウントがある場合、これらの 5 つの特定のパーツと、それらに関連付けられたその他のデータを、このマスター表示の下に作成したテーブルに表示したいと考えています。すべてのデータは別のデータ シートに格納されているため、フィルター処理の方法を知ってから、必要なデータの特定の部分をコピーして再表示する必要があります。

表示したいテーブルは「選択」と呼ばれ、現在 3 つのクロマン、ID、パーツ、入札番号があります。データを取得するテーブルは、Data という別のワークシートにあり、最終的にはユーザーから隠されます。これを手伝ってくれる人はいますか?

前もって感謝します。

4

1 に答える 1

0

これを行う1つの方法は、データをすべて現在のスプレッドシートに入れ、フィルタリングを使用して、必要な条件に一致する行に絞り込むことです。これを行うには、シートに非表示の列を追加し、その数式を次のように設定します。

= IF(PArea = "-ALL AREA PATHS-"、TRUE、IFERROR(IF(FIND(PArea、[@ [Producing Area]])> 0、TRUE、FALSE)、FALSE))

セレクターのドロップダウンリストは、名前付きの範囲(ここではPArea)である必要があります。

次に、次のコードを実行するボタンを追加できます。そのボタンに「フィルター」というラベルを付けて、ユーザーがフィルター基準を選択できるようにしてから、「フィルター」をクリックします。これにより、次のようなコードが実行されます。

'Consumer Area
If Range("PArea") = "- ALL AREA PATHS -" Then
    ActiveSheet.ListObjects("Table_Dependenciesl").Range.AutoFilter Field:=22
Else
    ActiveSheet.ListObjects("Table_Dependenciesl").Range.AutoFilter Field:=22, _
        Criteria1:="TRUE"
End If

非表示の列のセル(値=一致する場合はTrue、一致しない場合は空白)とVBAコードの組み合わせにより、フィルター列がtrueに設定されていないすべての行が非表示になります。この例では、「-ALL AREA PATHS-」というテキストが、ドロップダウンボックス@ PAreaを駆動するドロップダウン範囲に追加されます。セル数式のロジックは、すべての値が選択されている場合は値がtrueである必要があることを認識しています。選択した特定の値に一致させます。

autoFilterコマンドは1つまたは2つの引数を取ります-フィールド#は列#(@ 1から開始)であり、オプションの基準により、数式で非表示の列が「True」と表示される場所にフィルターが設定されます。基準を省略すると、フィルターが取り消され、その列はフィルター処理される行に寄与しなくなります。上記の行継続文字_に注意してください。髪の毛を抜かないようにしてください。

于 2013-02-05T18:47:03.773 に答える