
No.2ベストアンサー
- 回答日時:
ANo.1のkuma3fです。
繰り返し使用される場合は、抽出シートのクリアは必要ですね。
項目行を1行のみとする場合は、次のようにされたらよいと思います。
Dim シート As Worksheet
Dim シート名 As String
Dim 行番号 As Long
Dim 抽出行番号 As Long
Dim 最大行 As Long
Dim スイッチ As Integer
Sheets("抽出シート").Cells.ClearContents
Application.ScreenUpdating = False
抽出行番号 = 1
スイッチ = 0
For Each シート In ThisWorkbook.Sheets
シート.Activate
シート名 = ActiveWorkbook.ActiveSheet.Name
最大行 = Application.WorksheetFunction.CountA(Worksheets(シート名).Range("E1:E65536"))
If シート名 <> "抽出シート" Then
If スイッチ = 0 Then '最初のシートのみ項目行を抽出
Sheets(シート名).Rows(1).Select
Selection.Copy
Sheets("抽出シート").Select
Sheets("抽出シート").Rows(抽出行番号).Select
ActiveSheet.Paste
Application.CutCopyMode = False
抽出行番号 = 抽出行番号 + 1
スイッチ = 1
End If
行番号 = 2 '2行目から抽出対象
Do
Sheets(シート名).Select
Sheets(シート名).Cells(行番号, 5).Select
'***** 条件で抽出 *****
If Sheets(シート名).Cells(行番号, 5) > 100 Then
Sheets(シート名).Rows(行番号).Select
Selection.Copy
Sheets("抽出シート").Select
Sheets("抽出シート").Rows(抽出行番号).Select
ActiveSheet.Paste
Application.CutCopyMode = False
抽出行番号 = 抽出行番号 + 1
End If
'**********************
行番号 = 行番号 + 1
Loop Until 行番号 > 最大行
End If
Next シート
Sheets("抽出シート").Select
Sheets("抽出シート").Range("A1").Select
Application.ScreenUpdating = True
MsgBox "抽出しました。"
例は、スイッチで最初のシートの項目行のみ抽出させています。
条件での抽出は2行目からにしています。
kuma3f様
またまたありがとうございました。
まさに希望通りの結果を得ることができました。
これは色々と発展もできそうですね。
本当にありがとうございました。
No.1
- 回答日時:
条件付き書式で色がついているセルを関数やマクロで判断するのは難しいようです。
条件付き書式の条件で抽出されてはいかがでしょうか。
参考までに
例えば「E列のセルの値が100より大きい」で色をつけている場合は、次のようにします。
メニューバーの「挿入」→「ワークシート」で新たなシートを作成してシート名を"抽出シート"にする
↓
メニューバーの「ツール」→「マクロ」→「マクロ」をクリック
↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:抽出)
↓
名前を入力しましたら、「作成」をクリック
↓
Microsoft Visual Basicの画面が開きますのでSub 抽出()の下に次のコードをコピーして貼り付けてください。
Dim シート As Worksheet
Dim シート名 As String
Dim 行番号 As Long
Dim 抽出行番号 As Long
Dim 最大行 As Long
Application.ScreenUpdating = False
抽出行番号 = 1
For Each シート In ThisWorkbook.Sheets
シート.Activate
シート名 = ActiveWorkbook.ActiveSheet.Name
最大行 = Application.WorksheetFunction.CountA(Worksheets(シート名).Range("E1:E65536"))
行番号 = 1
If シート名 <> "抽出シート" Then
Do
Sheets(シート名).Select
Sheets(シート名).Cells(行番号, 5).Select
'***** 条件で抽出 *****
If Sheets(シート名).Cells(行番号, 5) > 100 Then'100より大きいなら抽出
Sheets(シート名).Rows(行番号).Select
Selection.Copy
Sheets("抽出シート").Select
Sheets("抽出シート").Rows(抽出行番号).Select
ActiveSheet.Paste
Application.CutCopyMode = False
抽出行番号 = 抽出行番号 + 1
End If
'**********************
行番号 = 行番号 + 1
Loop Until 行番号 > 最大行
End If
Next シート
Sheets("抽出シート").Select
Sheets("抽出シート").Range("A1").Select
Application.ScreenUpdating = True
MsgBox "抽出しました。"
'****コピー貼り付けはここまで ****
Microsoft Visual Basicの画面を×で閉じます
↓
Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック
↓
先ほど名前を付けたマクロを選択して「実行」をクリック
↓
"抽出シート"のA列に抽出されます。
例は、どのシートもE列の条件付き書式の条件が同じでデータの最終行までに空白行(抜けた行)が無いことが前提です。
この回答への補足
kuma3f様
大変丁寧にご説明いただきましてありがとうございます。
海外出張によりネットがつなげない環境だったため
ご返信が遅くなり申し訳ありませんでした。
早速試してみました。
これは今後、検索対象のシートが増えてもそのまま使えるのですね。
すごく便利です。
私は、検索対象シートごとにCase 1、Case 2 と書いていくしかないのかと考えていました。
For i=1 to n '検索シート数
Select Case i
Case 1 :
Case 2 :
・・・・・
End Select
'共通処理
Next
従って検索対象のシートが増えるたびにコードを
追加する必要があると思っていました。
なお、抽出の際に前の結果をクリアするために
宣言文のあとに下記を加えてみました。
Sheets("抽出シート").Cells.ClearContents
ところで、各検索対象シートの1行目は共通の項目名が
入っていますが、抽出結果はすべてのシートから
各々1行目の項目を引っ張ってきてしまいます。
項目行は1行目の1行のみ、とはできませんでしょうか?
ご教示頂ければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Visual Basic(VBA) 複数のシートを一つのシートにまとめたい 左から3番目以降のシートのE列のセルに⚪︎が入っている行を抽 2 2022/09/18 18:42
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
おすすめの美術館・博物館、教えてください!
美術館・博物館が大好きです。みなさんのおすすめをぜひお聞きしたいです。
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
excelのデータで色つき行の抽出方について教えてください
Excel(エクセル)
-
セルに背景色がある行を別シートにコピー
その他(Microsoft Office)
-
Excelのセルの色を変えた行(すべてのシート)を別シートに抽出したい
Excel(エクセル)
-
-
4
複数シートに色付きセル(条件つき書式で設定済み)の行を別シートに抽出
Visual Basic(VBA)
-
5
VBマクロ 色の付いたセルを含む行をコピーしたい。
Visual Basic(VBA)
-
6
EXCELにて複数列を同条件(色)で一括フィルタリングする
Excel(エクセル)
-
7
エクセルで色の変更を他のシートに反映させるには
Access(アクセス)
-
8
エクセル:色の付いたデータをまとめて抽出したい。
Excel(エクセル)
-
9
【Excel】 セルの色での判断はできますか?
Excel(エクセル)
-
10
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
11
エクセルの複数列を一度にフィルターしたい。
運輸業・郵便業
-
12
Excelで色付けしたセルに対し対応するセル値で返す方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルで前のシートを連続参...
-
excelでシート毎の最終更新日を...
-
Accessのスプレッドシートエク...
-
エクセルで前シートを参照して...
-
エクセル 計算式も入っていない...
-
Excelのシートを、まとめて表示...
-
シートを追加・名前を次月に変...
-
特定のシートの削除を禁止した...
-
シートの保護のあとセルの列、...
-
シート番号からシート名を取得する
-
エクセルのシート名をリスト化...
-
エクセルでファイルを開いたと...
-
EXCEL:同じセルへどんどん足し...
-
エクセルVBAでパスの¥マークに...
-
VBAで条件によりフォントサイズ...
-
スプレッドシートの関数で上か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
別シート参照のセルをシート毎...
-
前の(左隣の)シートを連続参...
-
エクセルで前シートを参照して...
-
エクセルでファイルを開いたと...
-
エクセル 計算式も入っていない...
-
エクセルで前のシートを連続参...
-
Accessのスプレッドシートエク...
-
特定のシートの削除を禁止した...
-
EXCEL:同じセルへどんどん足し...
-
エクセルVBAでパスの¥マークに...
-
シートの保護のあとセルの列、...
-
Excel、同じフォルダ内のExcel...
-
エクセルのシート名をリスト化...
-
シート番号からシート名を取得する
-
Excelのシートを、まとめて表示...
-
EXCELで1ヶ月分の連続した日付...
-
excelでシート毎の最終更新日を...
-
エクセルで毎回1枚目のシートを...
おすすめ情報