![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
エクセル2010を使用しています。
元データはSheet1(データが更新され、量が多いです。)
部署 品名 型式 数量 単価 合計
ああ AA aa 1 100 100
いい BB ad 2 200 400
うう BB au 11 100 1100
ああ CA ki 2 100 200
うう CD do 5 300 1500 (合計の部分には数式が入っています。)
↓(データが続いていきます)
抽出Sheetは各部署ごとにシートを作成、元データが更新されたら抽出Sheetも更新したい。
フィルターでやった場合、更新されたデータ反映のさせ方がわかりません。
プログラムでの場合は、言葉の意味が分からないので、注釈を入れていただけたら助かります。
作業が進まず困っていますので、どうぞよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんばんは!
VBAでの一例です。
元データはSheet1にあるとします。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, k As Long, sN As String
Dim wS As Worksheet, sSh As Worksheet, myFlg As Boolean
Application.ScreenUpdating = False
Worksheets.Add after:=Worksheets(Worksheets.Count)
Set sSh = ActiveSheet
With Worksheets("Sheet1")
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=sSh.Range("A1"), unique:=True
For i = 2 To sSh.Cells(Rows.Count, "A").End(xlUp).Row
sN = sSh.Cells(i, "A")
For k = 2 To Worksheets.Count - 1
If Worksheets(k).Name = sN Then
myFlg = True
Exit For
End If
Next k
If myFlg = False Then
Worksheets.Add after:=Worksheets(k - 1)
ActiveSheet.Name = sN
End If
Set wS = Worksheets(sN)
wS.Cells.Clear
.Range("A1").AutoFilter field:=1, Criteria1:=sN
.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
wS.Columns.AutoFit
wS.Move after:=Worksheets(i - 1)
myFlg = False
Next i
.AutoFilterMode = False
Application.DisplayAlerts = False
Worksheets(Worksheets.Count).Delete
Application.DisplayAlerts = True
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
関数でないのでデータ変更があるたびにマクロを実行する必要があります。
※ コードの細かい説明は割愛します。
流れとしては
① 作業用Sheetを追加
② Sheet1のA列データを重複なしに作業用SheetのA列にコピー&ペースト
③ 各「部署」名Sheetが存在するかどうか確認する
④ 部署名のシートがない場合はSheetを追加し、シート名を「部署」名にする
⑤ 作業用Sheetのデータ順にSheet1のA列をキーにフィルタをかける
④ フィルタで非表示になっていデータのみを各部署名のSheetにコピー&ペースト
といった流れのコードにしています。m(_ _)m
tom04さん
ご回答ありがとうございます。
自宅のパソコンで早速試しました。
求めていた答えにたどり着けました\(^o^)/
あとは、職場のパソコンで実働してみます。うまくいくことを願い。
またご報告させていただきます。まずは、ご連絡まで。
No.4
- 回答日時:
部署別にシートを分けるより抽出用のシートを1つだけ作った方が
いいと思いますけど。マクロでの案は出ているのでデータベースク
エリでの抽出方法を載せておきます。
Sheet2の A2に部署名を入れて B:F列に抽出されるようにします。
[データ]→[外部データの取り込み]の[その他のデータ ソース]
→[Microsoft Query]
[データ ソースの選択]から「Excel Files*」を選択し[OK]
参照しているファイルを選択して[OK]
名前定義したテーブル「データ範囲」を選択して「>」
→[次へ]→[次へ]→[次へ]→[完了]
[データのインポート]で データを返す先を指定して
[プロパティ]
→「定義」タブの[コマンド文字列]に
SELECT 品名, 型式, 数量, 単価, 合計
FROM [Sheet1$A:F]
WHERE 部署 = ?
と入力して[OK]→[OK]
するとパラメータを訊いてきます。
[パラメータ値の入力]で[パラメーター1]に B2セルを指定し
[この値/参照を今後の更新に使用する]にチェック
→[この値が変わるときに自動的に更新する]にチェック
→[OK]
以上。
d-q-t-pさん
ご回答ありがとうございますm(__)m
私の理解力ではどうも上手くいかず出来ませんでした。
申し訳ありません。ありがとうございました
No.2
- 回答日時:
添付図参照
名前が部署名の(例[ああ])のシートにおいて、
次式を入力したセル A2 を右方および下方にズズーッとオートフィル
=IFERROR(INDEX(Sheet1!B:B,SMALL(IF(Sheet1!$A:$A=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99),ROW($A:$A),""),ROW(A1))),"")
【お断り】上式は必ず配列数式として入力のこと
![「エクセル2010 別シートへのデータ抽出」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/d/298588_596dd31253bf8/M.jpg)
mike_gさん
ご回答ありがとうございます。
申し訳ありません。
丁寧に書いていただいたのに、うまく作動させることができませんでした。
書いた部分が表記できるようでしたらお願いいたします。
また、元データが追加された場合(行は100以上あります)はどの用意対処したらよいのでしょうか?
No.1
- 回答日時:
抽出シートの統計が関数利用であれば、
「自動計算」となっている場合、で、
データー側と統計側が同時に開かれている場合、は、
データーの変更は即座に統計側も更新されます。
「フィルターでやった場合」という詳細がよく解りませんが、
フィルターで用いたキーを使った関数で統計すればよいとおみます。
angkor_hさん ご回答ありがとうございます。
フィルターで部署ごとに別シートにデータを抽出を試みたのですが、
一度フィルターでデータ抽出した後に、追加データを再フィルターしてみたらデータの抽出ができませんでした。
統計はする必要はなく、追加されるたびにデータがそれぞれのシートに反映してほしいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) 更新前と更新後の差分をVBAを使って抜き出したい 5 2023/06/01 14:35
- その他(ソフトウェア) 現在と過去の顧客名簿、新規・解約・更新など作りたいのですが「やよいの顧客管理」なら簡単に扱えますか? 1 2022/05/18 10:44
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
excelの不要な行の削除ができな...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelマクロ 差分抽出の方法が...
-
エクセル 縦に長い表の印刷時...
-
エクセルで名簿を50音で切り分ける
-
トランジスタの選び方
-
VBAで CTRL+HOMEの位置へ移動...
-
Excelで日付変更ごとに、自動的...
-
【Excel】【VBA】重複しないリ...
-
EXCEL グラフ作成 データの範...
-
ファンモータが作動しない。
-
EXCELで2つのファイルから重複...
-
別々のシートの表をピボットテ...
-
コンボボックスの参照先(ListF...
-
エクセルで1つのシートを拠点...
-
エクセルのデータ振り分け方法...
-
Excel 売上管理シートに入力し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数シートからデータを拾って...
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
【エクセルマクロ】複数シート...
-
トランジスタの選び方
-
EXCEL 複数行のデータを1行にま...
-
EXCELで2つのファイルから重複...
-
別々のシートの表をピボットテ...
-
エクセル VBA VLOOKUP
-
他のシートの一番下の行データ...
-
エクセルのカメラ機能について
-
時間帯の重複を除いた集計について
-
EXCEL の表を一行ずつシートに...
-
ファンモータが作動しない。
-
エクセルで名簿を50音で切り分ける
-
エクセル マクロ "特定の日付...
おすすめ情報