- 締切済み
条件に合う特定の項目を別シートに集計
excelの表作成につき、ご教示願います。別シートに以下のような条件で特定の項目を抽出して表を作成したいのですが、どのようにすればよろしいでしょうか。 1.sheet1に全店の担当者別の成績進捗表があります。 2.その進捗表のJ列に予算達成までの残額が入っています。 3.例えば、予算達成までアト1,000万以内の担当者について、sheet2に、その担当者名(sheet1のB列)、所属の支店名(sheet1のE列)、予算までの残額(sheet1のJ列)のみ抽出した表を作成。 つまり、予算達成まで間近な担当者と担当者ごとの残額をまとめた表を作成しようとしています。 因みにWindows7でexcel2010です。 何卒よろしくお願いいたします!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nishi6
- ベストアンサー率67% (869/1280)
フィルターの詳細設定機能を使ってみます。 このような要求で関数やマクロも作りますが効率が悪いですね。作ったことしかできないわけです。変更や拡張が自在にできればいいんですが。会社では、基本的にはツールの使い方を教えるようにしています。 データは添付図のSheet1(残高は万円)、出力するSheet2に添付図のように検索条件範囲と抽出範囲を設定しておきます。検索条件範囲A1:B2、抽出範囲E1:G1です。 検索条件範囲は「残高」に関して2つ書いています。「1000以下 <=1000」と「0超 >0」の2つのAND条件なので横に並べています。縦に書くとORになります。予算達成で残高=0としました。 Sheet1のデータ内をクリックして、データタブ>詳細設定を選択し、フィルターオプションの設定で、 抽出先→指定した範囲 リスト範囲→Sheet1の表題も含めた全データ 検索条件範囲→Sheet2のA1:B2 抽出範囲→Sheet2のE1:G1 重複するレコードは無視する→オフ OKを押すと該当データが表示されるはずです。 このような方法を使うと、金額の条件を変更したり、出力データ項目を追加したり、検索条件に「支店名」を加えたりなどと、DB風に使えます。何より、何でも作ってくれと言われません。この辺りは算式よりメリットがあるところでしょう。
- mar00
- ベストアンサー率36% (158/430)
shee1とsheet2の項目を同じ行に入力して下さい。 下記のマクロは項目が3行目になっているのでGyou = 3を適宜修正して下さい。 sheet2のデータはマクロを実行するたびに削除するようにしています。 Dim Ws01 As Worksheet, Ws02 As Worksheet Dim Gyou As Integer Dim INP As Integer Dim myRow As Integer Sub Macro1() Set Ws01 = Worksheets("sheet1") Set Ws02 = Worksheets("sheet2") Gyou = 3 If Gyou < Cells(Rows.Count, "A").End(xlUp).Row Then Ws02.Range("A" & Gyou + 1 & ":A" & Ws02.Cells(Rows.Count, "A").End(xlUp).Row).EntireRow.Delete End If For INP = Gyou + 1 To Ws01.Cells(Rows.Count, "B").End(xlUp).Row If Ws01.Range("J" & INP) > 0 And Ws01.Range("J" & INP) <= 10000000 Then myRow = Ws02.Cells(Rows.Count, "A").End(xlUp).Row + 1 Ws02.Range("A" & myRow) = Ws01.Range("B" & INP) Ws02.Range("B" & myRow) = Ws01.Range("E" & INP) Ws02.Range("C" & myRow) = Ws01.Range("J" & INP) End If Next INP End Sub 質問者様の思い通りの動作するとよいのですが。