• 締切済み

赤いセルがある行だけ取り出すことはできませんでしょ

お世話になります。 列がQA列まで、行が5000行ほどあるファイルがあります。 ところどころのセルが赤く塗りつぶしされているのですが、 赤いセルがある行だけ取り出すことはできませんでしょうか? よろしくお願いいたします。

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

>こちらの検索ですが、「検索条件に一致するデータが見つかりません。」になり、そこから先に進めませんでした。 条件付き書式はセルの書式設定からの書式とは異なり、「書式」の検索対象になりません。 条件付き書式で色を付けているなら、数式を使ったフィルタオプションの設定を使って該当データを抽出することができます。 その条件付き書式の条件を具体的に例示していただければ、使用する数式などを提示できると思います。

zmzmsss
質問者

お礼

ありがとうございます。参考にさせていただきます。

回答No.6

#4、5です。#5への追加レスです。 一応、説明しますが、 提示したマクロは、 1行めを処理の対象外にしています。 1行めにあるすべてのセルが「塗りつぶしなし」であっても、 1行めを削除することはありません。 これは、一般的なExcel(他スプレッドシート全般)における慣習で 1行を特別扱いする、という意味もありますが、 マクロの処理内容を簡潔に纏める為の便宜、です。 1行めも処理対象にしたい場合は、その旨、伝えて貰えれば、 (処理を書き加えて)対応するつもりです。 追加レス、以上です。

zmzmsss
質問者

お礼

ありがとうございます。参考にさせていただきます。

回答No.5

#4です。補足コメント拝見しました。 > マクロ初心者なのでマクロでないほうがありがたいです。 今回ご提示の条件を勘案すると、 手作業で443という列数分の繰り返し処理をする以外にはないようですから、 マクロで対応するのが妥当かと思われます。 回答#2の方法を応用した方法を採ることになりますが、 回答#2補足に書かれているように443列分の繰り返しが大変ですので。 もっとも、 [条件付き書式]のルールに指定している条件や数式、 これらを直接抽出することが可能であれば、 手作業でも可能性はあると思われます。 この回答を最後まで読み試してみてから、 結論として、やっぱり手作業でなきゃ困る、ということでしたら、 今現在、「赤く塗りつぶし」ている[条件付き書式] のルールに指定している条件や数式、を シート上の相関関係が判るような形で提示してみてください。 内容にもよりますが、相応の手数が必要であることは了承しておいてください。 > →はい、条件付き書式から、[セルの書式設定][塗りつぶし]をしています。 > 該当のセルには、数字が入っているセルと、空欄のセルがあります。 > →ほかのセルは、塗りつぶしなしです。 > →ところどころ赤いセルがあるのですが、一列全て塗りつぶしなしの行は削除したいです。 「一行全て塗りつぶしなしの行は削除」という意味で受け止めています。 〓〓〓〓〓 導入手順■1 以下のマクロコード(★この行から★この行まで)をコピー ' ' /// ★この行から Sub 削除_赤く塗り潰されたセルがひとつもない行すべてを() ' 条件付き書式対応/// Re8995294w Dim i As Long   Application.ScreenUpdating = False   If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False   With ActiveSheet.UsedRange     .AutoFilter     For i = 1 To .Columns.Count       .AutoFilter _         Field:=i, _         Operator:=xlFilterNoFill     Next i     On Error Resume Next     .Offset(1).EntireRow.SpecialCells(xlCellTypeVisible).Delete     On Error GoTo 0   End With   ActiveSheet.AutoFilterMode = False   Debug.Print ActiveSheet.UsedRange.Row   Application.ScreenUpdating = True End Sub ' ' /// ★この行まで 導入手順■2 Excelブックを表示して、続けて、[Alt]を押し下げながら[F11]キー  →VBA編集画面が表示される。 導入手順■3 VBA編集画面で、[Alt]を押し下げたまま [I]キー[M]キー を連続  →VBA編集画面上で標準モジュールが挿入(新たねシートが表示)される。 導入手順■4 VBA編集画面で、[Ctrl]を押し下げながら[V]キー  →コピーしたマクロコードが貼り付けされる 導入手順■5 VBA編集画面から、[Alt]を押し下げながら[F11]キー  →VBA編集画面を非表示にしてExcel画面に戻る 導入手順■6 Excelブックをマクロ有効ブックとして保存する 導入手順■7 Excelブックから、[Alt]を押し下げながら[F8]キー  →[マクロ]ダイアログ表示 導入手順■8 表示されたマクロ名が一致していることを確認したら、[実行]ボタン  →マクロ実行 導入手順■9 実際に処理された結果内容の確認・検証 〓〓〓〓〓 以上です。

zmzmsss
質問者

お礼

ありがとうございます。参考にさせていただきます。

回答No.4

こんにちは。 > 列がQA列まで、行が5000行ほどあるファイルがあります。 > ところどころのセルが赤く塗りつぶしされているのですが、 > 赤いセルがある行だけ取り出すことはできませんでしょうか? 私なら迷わずマクロで処理させます。 あれこれ手作業での手順を考えている時間程度でマクロを書いてみました。 マクロにするかどうかは、ともかく、何れ、 本来必要な確認事項が、以下です。 1◆「赤く塗りつぶし」とは、[セルの書式設定][塗りつぶし]のことでしょうか? 2◆「赤く塗りつぶし」されていないセルは他の色で塗り潰されているのでしょうか? 3◆「赤いセルがある行だけ取り出す」の「取り出す」とはどういう結果をお望みなのでしょうか? こちらで仮に決めた仕様が以下のように。 '1◆'については、[条件付き書式][書式][塗りつぶし]についても対応させます。 '2◆'については、もし、単に「セルの塗りつぶしが適用されたセル」を基準にできるのなら、    より簡素に纏めることが可能ですが、ここでは、「赤く塗りつぶし」を基準にします。 '3◆'「取り出す」処理をした結果がどうなればいいのか解りませんから、     マクロその1 [非表示_赤く塗り潰されたセルがひとつもない行すべてを]     マクロその2 [新しいシートにコピペ_赤く塗り潰されたセルがある行すべてを]    とりあえず2例挙げておきます。 もしも、マクロを使えるようにする方法が解らない場合、 マクロの記述内容を詳しく知りたい場合、 疑問が残る場合、 補足欄にでも書き込んでみて下さい。 また、「取り出す」の意味が、ここで提示する2例以外だった場合、 例えば、フィルター抽出だけでいい、とか、 単に数式の演算対象として篩に掛けたいだけ、などなどなど、 複数の解釈がありますので、読んだ人誰もが一意に理解できるよう、 求める結果を表すよう努めてください。 443 列 * 5000 行、ということですと、 本来はより高速な処理をお奨めするところですが、 ひとまずは、記述内容が比較的易しいものを選んでいます。 もしも、パフォーマンス的に不満が残るような場合は、 こちらから示した疑問点をクリアにするように補足してみてください。 また、マクロを使うことが許されない、というような場合でも、 情報を補足して貰えれば、手作業での手順を示すことは可能です。 何れ、こちらが対応に迷うことがなければ、再レスします。 以下、標準モジュールに貼り付けて実行するマクロです。 ' ' /// マクロその1 Sub 非表示_赤く塗り潰されたセルがひとつもない行すべてを() ' /// Re8995294w Dim rF As Range, rR As Range, c As Range Dim nRow As Long   With Application     .ScreenUpdating = False     .Calculation = xlCalculationManual     .EnableEvents = False   End With   Call 再表示_非表示の行を   With ActiveSheet.UsedRange     Set rF = .Columns(.Columns.Count + 1).Cells     For Each rR In .Rows       nRow = nRow + 1       For Each c In rR.Cells         If c.DisplayFormat.Interior.Color = vbRed Then           rF(nRow) = 0           Exit For         End If       Next     Next   End With   On Error Resume Next   rF.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True   On Error GoTo 0   rF.ClearContents   nRow = ActiveSheet.UsedRange.Row   With Application     .ScreenUpdating = True     .Calculation = xlCalculationAutomatic     .EnableEvents = True   End With End Sub Sub 再表示_非表示の行を() ' /// Re8995294w   Rows.Hidden = False End Sub ' ' /// ' ' /// マクロその2 Sub 新しいシートにコピペ_赤く塗り潰されたセルがある行すべてを() ' /// Re8995294w Dim rF As Range, rR As Range, c As Range Dim nRow As Long   With Application     .ScreenUpdating = False     .Calculation = xlCalculationManual     .EnableEvents = False   End With   Call 再表示_非表示の行を   With ActiveSheet.UsedRange     Set rF = .Columns(.Columns.Count + 1).Cells     For Each rR In .Rows       nRow = nRow + 1       For Each c In rR.Cells         If c.DisplayFormat.Interior.Color = vbRed Then           rF(nRow) = 0           Exit For         End If       Next     Next   End With   On Error GoTo Out_   rF.SpecialCells(xlCellTypeConstants).EntireRow.Copy   On Error GoTo 0   Worksheets.Add(After:=ActiveSheet).Paste Out_:   rF.ClearContents   nRow = rF.Worksheet.UsedRange.Row   With Application     .ScreenUpdating = True     .Calculation = xlCalculationAutomatic     .EnableEvents = True   End With End Sub ' ' ///

zmzmsss
質問者

お礼

ありがとうございます。参考にさせていただきます。

zmzmsss
質問者

補足

アンサーありがとうございました。説明が足りなかったようですみません。 マクロ初心者なのでマクロでないほうがありがたいです。 1◆「赤く塗りつぶし」とは、[セルの書式設定][塗りつぶし]のことでしょうか? →はい、条件付き書式から、[セルの書式設定][塗りつぶし]をしています。 該当のセルには、数字が入っているセルと、空欄のセルがあります。 2◆「赤く塗りつぶし」されていないセルは他の色で塗り潰されているのでしょうか? →ほかのセルは、塗りつぶしなしです。 3◆「赤いセルがある行だけ取り出す」の「取り出す」とはどういう結果をお望みなのでしょうか? →ところどころ赤いセルがあるのですが、一列全て塗りつぶしなしの行は削除したいです。 すみませんが、よろしくお願いします。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

400列もあるデータなら以下のような手順で赤色セルを選択し、フィルタオプションの設定の機能で当該行以外の行を削除する操作が簡単かもしれません(2,3分で処理できます)。 元データのシートのシート名部分をCtrl+ドラッグでコピーし、同じ内容のシートを2つ作成し、そのシートでCtrl+Fで検索ダイアログを出し「オプション」で「書式」で赤の塗りつぶしを指定し「すべて検索」してからCtrl+Aで赤色セルをすべて選択状態にします。 選択されたセルの上で右クリックし「削除」で「行全体」を選択し該当データ行のみ削除されたシートを作成します。 元データのシートで「データ」「詳細設定」でリスト範囲を指定し検索条件範囲に先ほど該当セルを削除したシートのデータ範囲を指定し「OK」します。 この操作で削除したい行だけが抽出されていますので、データ行を選択してDeleteして、「フィルタ」アイコンを2回クリックしてフィルタモードを解除します。 最後にA列から対象列を選択して「データ」「フィルタ」で「空白セル」のチェックを外せばご希望のデータだけ抽出されています。

zmzmsss
質問者

お礼

ありがとうございます。参考にさせていただきます。

zmzmsss
質問者

補足

アンサーありがとうございます。 >元データのシートのシート名部分をCtrl+ドラッグでコピーし、同じ内容のシートを2つ作成し、そのシートでCtrl+Fで検索ダイアログを出し「オプション」で「書式」で赤の塗りつぶしを指定し「すべて検索」してからCtrl+Aで赤色セルをすべて選択状態にします。 こちらの検索ですが、「検索条件に一致するデータが見つかりません。」になり、そこから先に進めませんでした。 どうして検索できなかったのか、よくわかりません。

回答No.2

エクセルのバージョンにもよりますがオートフィルタで色のついたセルを絞込みすることが出来ます。 その機能を使ってみてはいかがでしょうか。 オートフィルタのやり方 http://www.becoolusers.com/excel/auto-filter.html 色フィルタのやり方 http://www.becoolusers.com/excel/filter-by-color.html

zmzmsss
質問者

お礼

ありがとうございます。参考にさせていただきます。

zmzmsss
質問者

補足

400列ほどあります。セルが一つでも色がついていれば、その行を取り出したいというご相談です。

  • manmanmann
  • ベストアンサー率12% (535/4296)
回答No.1

セルの色を指定してデータ抽出-セルの色でフィルタ http://www.relief.jp/itnote/archives/002816.php

zmzmsss
質問者

お礼

ありがとうございます。参考にさせていただきます。

zmzmsss
質問者

補足

400列ほどあります。セルが一つでも色がついていれば、その行を取り出したいというご相談です。

関連するQ&A