2016-10-25 18 views
0

カラム「A」をフィルタリングしました。カラム「A」の可視セルにvlookup式を適用する必要があります。どのように私はvbaでこれを達成するのですか?ワークシート内の合計行数は30,000、フィルタ処理された行数は100に閉じます。フィルタリングされたデータ/可視セルのみでvlookup式を適用する方法

+0

シートをソートできますか? – Comintern

+0

いいえデータが存在する順序は変更されません – Prakash

+3

「Range( "A2:A100")を使用して可視セルをループする必要がありますSpecialCells(xlCellTypeVisible)正しい値を見つけてください。 –

答えて

0

Excel配列式を使用するだけで、VBAを使用せずにこの問題を解決できます。
しかし、この式をVBAで設定する場合は、Range.FormulaArrayプロパティを使用してください。

私たちは、この配列数式を使用している:あなたが囲む中括弧なしでそれを貼り付け、 + シフト + (Windows)を入力しCtrlキーを押す必要がExcelでこれを使用するには

{=VLOOKUP(A2,IF(SUBTOTAL(3,OFFSET(Table2!$B$2:$B$5,ROW(Table2!$B$2:$B$5)-ROW(Table2!$B$2),0,1)),Table2!$B$2:$C$5,0),2,0)} 

をかcmd + シフト + (Mac)を入力して配列式を有効にします。


この式はどのように機能しますか?

データシートTable2は次のようになります。2月にのみ表示されるように

Column A Column B Column C 
┌ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┐ 
│ Month │ Store │ Revenue │ 
├ ─ ─ ─ ┼ ─ ─ ─ ┼ ─ ─ ─ ┤ 
│ Jan │  1  │ 6.000 │ 
├ ─ ─ ─ ┼ ─ ─ ─ ┼ ─ ─ ─ ┤ 
│ Jan │  2  │ 8.000 │ 
├ ─ ─ ─ ┼ ─ ─ ─ ┼ ─ ─ ─ ┤ 
│ Feb │  1  │ 10.000 │ 
├ ─ ─ ─ ┼ ─ ─ ─ ┼ ─ ─ ─ ┤ 
│ Feb │  2  │ 12.000 │ 
└ ─ ─ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ┘ 

データシートは、月によってフィルタリングされます。
結果があることのようになります。

Column A Column B 
┌ ─ ─ ─ ┬ ─ ─ ─ ┐ 
│ Store │ Revenue │ 
├ ─ ─ ─ ┼ ─ ─ ─ ┤ 
│  1  │ 10.000 │ Formula: {=VLOOKUP(A2,IF(SUBTOTAL(3,OFFSET(Table2!$B$2:$B$5,ROW(Table2!$B$2:$B$5)-ROW(Table2!$B$2),0,1)),Table2!$B$2:$C$5,0),2,0)} 
├ ─ ─ ─ ┼ ─ ─ ─ ┤ 
│  2  │ 12.000 │ Formula: {=VLOOKUP(A3,IF(SUBTOTAL(3,OFFSET(Table2!$B$2:$B$5,ROW(Table2!$B$2:$B$5)-ROW(Table2!$B$2),0,1)),Table2!$B$2:$C$5,0),2,0)} 
└ ─ ─ ─ ┴ ─ ─ ─ ┘ 

私の答えは、このsolutionに基づいています。

関連する問題