金額が最も高いものから降順にフィルタリングされる出力があります。
100K 未満のデータを除外して、100K 以上の値を持つ行を表示する方法があるかどうかを知りたいだけです。
私のサンプルデータ:
Name | Amount
Person 1 | 500,000
Person 2 | 400,000
Person 3 | 350,000
Person 4 | 200,000
Person 5 | 150,000
Person 6 | 90,000
Person 7 | 80,000
...
望ましい出力:
Name | Amount
Person 1 | 500,000
Person 2 | 400,000
Person 3 | 350,000
Person 4 | 200,000
Person 5 | 150,000
これをコード化したり条件を追加したりする方法がわかりません。
答え1
答え2
あなたが説明した内容は、オートフィルターをオンにするか、データを Excel テーブル オブジェクトに変換して、それぞれのフィルター設定を選択し、データを並べ替えることで実現できます。リストにさらにデータを追加する場合は、フィルターと並べ替えを繰り返す必要があります。
フィルターと並べ替えを自動的に適用したい場合は、Power Query を使用してデータを読み込み、Power Query でフィルターと並べ替えを実行し、結果を別のシートに読み込むことができます。元のリストにさらにデータが追加された場合は、Power Query を更新するだけで済みます。VBA は必要なく、ブックでマクロを有効にする必要もありません。
Power Query は、Excel 2010 および 2013 の無料アドインとして利用でき、それ以降のバージョンではデータ リボンに「取得と変換」として組み込まれています。
答え3
Sub FilterAndCopy()
Dim xStr As String
Dim xAddress As String
Dim xRg As Range
Dim xCRg As Range
Dim xSRg As Range
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Select Range To Filter:", "Filter Range", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xCRg = Application.InputBox("Select Criteria range:", "Filter Range", "", , , , , 8)
If xCRg Is Nothing Then Exit Sub
Set xSRg = Application.InputBox("Select Output Range:", "Filter Range", "", , , , , 8)
If xSRg Is Nothing Then Exit Sub
xRg.AdvancedFilter xlFilterCopy, xCRg, xSRg, False
xSRg.Worksheet.Activate
xSRg.Worksheet.Columns.AutoFit
End Sub
使い方:
- コピー&ペーストこのコードを標準モジュールとして保存します。
- セルに条件(データをフィルタリングするため)を書き込みます(スクリーンショットに示すように)。
注記:
選択中基準両方を選択すると、列ヘッダー(スクリーンショットではデータ) とその下のセル (>100000)。
- 走るマクロ。
- 応答する入力ボックスそして最後にわかりました。