1

マスターシートの2列:

col1      col2
Apple     Fruit
Spinach   Veg
Orange    Fruit
Potatoe   Veg   
Pear      Fruit
Bannana   Fruit
Carrot    Veg
Potataoe  Veg

Fruitすべてのデータを別のシートにコピーし、すべてのデータを3番目のシートにコピーしたいとしますVeg。これを行う方法はありますか?マクロが必要ですか、それともどういうわけかできVLOOKUPますか?

また、これを動的にする必要があるため、新しい行が追加されると、対応するシートが更新されます。

4

3 に答える 3

2

あなたは式のこの恐ろしい怪物を使うことができます:

=INDEX($B$2:$B$9, SMALL(IF("veg"=$A$2:$A$9, ROW($A$2:$A$9)-MIN(ROW($A$2:$A$9))+1, ""), ROW(A1)))

Ctrl + Shift+Enterを使用して配列数式として入力します。

HorribleMonstrousityFormula

私はここで式を見つけました:http: //www.get-digital-help.com/2009/10/25/how-to-return-multiple-values-using-vlookup-in-excel/

これは、この数式の最良のバージョンまたは最も洗練されたバージョンではない可能性があります(これは一般的な数式タスクです)が、作業は完了します。

于 2012-10-17T14:39:06.160 に答える
2

ピボットテーブル(Excel 2007を使用)を使用しますが、ソースが変更/拡張されるたびに更新し、テーブル/データ範囲を監視する必要があります。追加が不足しないようにします。

SO12932741の例

于 2012-10-17T18:17:58.647 に答える
1
  • シートタブを右クリック
  • コードを表示
  • 以下のコードをコピーして貼り付けます

列Bが変更されるたびにコード

  1. 「Fruit」の列Bをオートフィルターし、レコードをシート2の列A:Bにコピーします。
  2. 「Veg」の列Bをオートフィルターし、レコードをシート2の列A:Bにコピーします。

コード

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set rng1 = Intersect([B:B], Target)
If rng1 Is Nothing Then Exit Sub
Set ws1 = Sheets(2)
Set ws2 = Sheets(3)
ws1.[A:B].ClearContents
ws2.[A:B].ClearContents
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False
With ActiveSheet.Range("A:B")
.AutoFilter Field:=2, Criteria1:="Fruit"
.Copy ws1.[a1]
.AutoFilter Field:=2, Criteria1:="Veg"
.Copy ws2.[a1]
End With
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
End Sub
于 2012-10-18T00:15:43.560 に答える