人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルで、複数のシートから条件にあうデータを抽出して新しいシートにデータを出力したいと思っています。つまり、クエリー機能をエクセル内部のシートに対して使いたいと思うのですが、適切な方法を教えて下さい。

●質問者: fwix3503
●カテゴリ:コンピュータ
✍キーワード:エクセル クエリ データ 抽出
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hayashi7
●27ポイント

http://www.atmarkit.co.jp/fwin2k/win2ktips/296exceldb/exceldb.ht...

◎質問者からの返答

回答有り難うございます。外部データベースではなく、エクセルの同一ファイルのシートに対するクエリーあるいはそれと同等の機能に関する情報を希望しています。


2 ● minkpa
●27ポイント

http://kokoro.kir.jp/excel/auto-filter.html

◎質問者からの返答

回答ありがとうございます。オートフィルター機能では、同一シート内での作業になります。新しいシートへの抽出はできません。シート間のリレーション機能も使えないので、不十分ですね。


3 ● airplant
●26ポイント

このような操作したいことありますよね。

同じ様式なら、私は全部のシートをくっつけて1つにしてから、フィルターしています。


だいぶ前に作ったマクロを参考までに掲載しておきます。

Sub すべてのシートを一つにまとめる()
'
' Call MoveNsheets2ONE()
' すべてのシートを一つにまとめる。様式は、1枚目のシートをベースにする
'
' IN: シート全部→削除される
' OUT: 「集合シート」が1枚できる

'
 Dim iSheetCNT As Integer
 Dim sSaveSheet As String
 Dim i As Integer
 Dim iCurRow As Integer
 Dim iSaveRow As Integer
 Dim iSaveSheet As Integer
 
 sSaveSheet = "集合シート"
 iSheetCNT = Sheets.Count
 
 Sheets(1).Copy before:=Sheets(1)
 ActiveSheet.Name = sSaveSheet
 Cells.Select
 Selection.ClearContents
 Range("A1").Select
 iSaveSheet = 1
 iSaveRow = 1

 For i = 1 To iSheetCNT
 
 Worksheets(2).Select 'Copy元(常に2個目)
 Range("A1", ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address).Select
 Selection.Copy
 iCurRow = Selection.Areas(1).Cells.Rows.Count
 
 Sheets(sSaveSheet).Select 'Copy先
 Range("A" & CStr(iSaveRow)).Select
 ActiveSheet.Paste
 
 Worksheets(2).Select 'Copy元削除(常に2個目)
 Application.DisplayAlerts = False
 ActiveWindow.SelectedSheets.Delete
 Application.DisplayAlerts = True
 
 iSaveRow = iSaveRow + iCurRow
 
 Next i
 Range("A1").Select

End Sub

http://www.google.co.jp

◎質問者からの返答

回答有難うございます。エレガントなマクロですね。大変参考になりますが、私のケースではシート間で列数や項目が異なっているため、そのままでは使えません。やはり、個別にマクロを組むしかないですかね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ