• ベストアンサー

エクセルで特定の背景色を持つセル内の数値を検査したいのですが

エクセルでブック内の全シートに対して、B列からE列に数値が設定されているブックがあり、 A列にデータのナンバーが振られており、最後のデータの一つ下にはデータの終わりを告げる、EOFという文字列が入っています。 その数値群の中で、特定の背景色を持つセルには必ず0が入っているはずなのですが、手入力のミスでいくつかのセルに他の数値が入っていました。 手作業ですとミスが発生してしまうので、エクセルの機能かマクロで以下の条件で検索をかけ、NGデータがあるかどうかの検査をしたいと考えていますが、可能でしょうか。 条件1:セルの背景色=灰色(エクセルの背景色選択画面で一番薄い灰色です) 条件2:セルの数値=0以外の数値や文字列 データの構造例     A列 /  B列   /  C列   /  D列   /  E列   / 1行目 1 /10(背景白)/0(背景灰)/0(背景灰)/10(背景青)/ 2行目 2 /10(背景白)/0(背景灰)/2(背景灰)/10(背景青)/ 3行目 3 /10(背景灰)/0(背景赤)/0(背景赤)/10(背景青)/ 中略 145行目 145 /55(背景白)/0(背景白)/0(背景灰)/0(背景青)/ EOF 上記の場合だとセル2Dに誤った数値が入っていることを告知するようなものを考えています。 シート総数は140シートで、エラーが見つかった時点で検索を終わっても問題ありません。(最後にたどり着くまで修正、チェックを繰り返しますので)

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

>NGデータがあるかどうかの検査をしたいと考えていますが、可能でしょうか おそらく可能です。でも質問文を拝見して「何をどうすれば良いのか」よく理解できません。だからチェックするマクロを書いても「私が思っているのと少し違う」と言われかねません(これをやられると回答側はへこみます) だから「指定したセルの背景色インデックス番号を取得する」汎用的なをユーザ定義関数(=マクロ)を回答します。これを使えば関数で処理ができますから応用が利くと思います 以下のマクロをAlt+F11でVBE画面を開き、左側のVBA Projectのシート名右クリック→挿入→標準モジュールで開く画面に貼り付けてください。 Function ColorIndex(ByVal trg As Range) As Integer   If trg.Interior.ColorIndex = xlNone Then     ColorIndex = 0   Else     ColorIndex = trg.Interior.ColorIndex   End If End Function VBE画面は閉じてシート画面に戻り、適当なセルに  =ColorIndex(A1) と式を入力するとA1セルの背景色のインデックス番号を返します。 関数なら  =IF(AND(A1<>0,ColorIndex(A1)=37),"Error","OK") のようにチェックができますよ(インデックス番号は適当です) ただし背景色を変える動作は関数の値を変える契機になりません。(セルの値が変更されないと関数は自動計算されません) ですから背景色だけを変更してチェックし直すにはAlt+Ctrl+F9で「強制再計算」してやる必要がありますのでご注意ください

lapacket_s
質問者

お礼

エクセルマクロは記録マクロを元に弄くったりとかはよくやるのですが、 自分で関数を定義できるのですね! 初めて知りました、有難う御座います。 教えていただいたものを元に作成してみようと思います。 素早いご回答有難う御座いました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

VBAでなら可能な課題です。VBAは経験ありますか。質問者のスキルと少しの勉強で出来るとか出来ないかどうかの結論が出ます。関数などでは出来ません。 シート数とセル数がそんなに多くなければ、 条件付き書式で、新たに0のセルに目立つセルの色を設定し、目視でチェックすることも、VBAプログラム作成で苦労するレベルなら、結局早く完了して、能率的かと思うが。 コードのヒントだけ 標準モジュールに Sub test01() Dim sh As Worksheet For Each sh In Worksheets MsgBox sh.Name d = sh.Range("A65536").End(xlUp).Row MsgBox d For Each cl In sh.Range("A1:E" & d - 1) MsgBox cl ' 処理 Next Next End Sub ーー 上記で全シートとA1:Ex(xはEOFの前行まで)を捉えていることを確認し、処理のところへ、値0とセルのパター色の対応のチェックのコードを入れること。 その際Msgboxの各行は削除する。 誤りが見つかれば何らかの方法で表示する。

lapacket_s
質問者

お礼

質問の際にこちらのスキルを書くべきでした。 残念ながらデータ数が膨大ですので、目視では厳しかったです。 素早いご回答とご指摘、有難う御座いました。

関連するQ&A

  • 特定の条件に合うセルの背景色の変更

    別のファイルから外部リンクでA列とB列にデータを反映させて、B列のセルに未使用と記入されているならA列のセルの背景を青に、 着荷障害と記入されているならA列のセルの背景を赤に、 という風なことはできるのでしょうか? A列:部品返却期限      B列:返却分類 A1セル:1/16(背景色:なし) B1セル:売上 A2セル:1/22(背景色:青)  B2セル:未使用 A3セル:1/31(背景色:赤)  B3セル:着荷障害 ↑のような感じなのですが。 関数や条件付書式などで、できるのでしょうか。

  • Excel VBA 全てのセルを読み込み、背景色で判断

    VBA初心者です。環境はWindowsXP,Excel2003です。 よろしくお願い致します。 1~3のシートの全てのセルを読み込んで、背景色が赤色のセルの文字をシート4にコピペしたいのです。 このとき、赤色になるセルの列は必ずF~ABまで結合されています。 替わるのは何行目かという行数のみです。 (結合セルは、最初のH列と見なせば良いのであれば気にしないで下さい。) さらに、赤色のセルをコピペする際に、 赤色のセルから上に上がって、 最初の空白のあるセルの下3行も一緒にコピペして シート4に連れて行きたいのです。 ほとんどのセルは文字と数字で埋まっていますので、 空白セルを条件にすると組み易いかと考えました。 【シート4】は下記のようになる予定です。  ABCDEFGHIJKLMNOPQRSTU 1~背景色が赤かったシート1のセル~~~~~ 2~を上に行って最初の空白のあったセルの~~ 3~下3行の丸々コピペ~~~~~~~~~~~ 4~~背景色が赤かったシート1のセル内容~~ 5~背景色が赤かったシート2のセル~~~~~ 6~を上に行って最初の空白のあったセルの~~ 7~下3行の丸々コピペ~~~~~~~~~~~ 8~~背景色が赤かったシート2のセル内容~~ 9~背景色が赤かったシート1のセル~~~~~ 10~を上に行って最初の空白のあったセルの~~ 11~下3行の丸々コピペ~~~~~~~~~~~ 12~~背景色が赤かったシート1のセル内容~~ カナリの初心者なため、組まれたものは読めるのですが、 最初から組む事がなかなか出来ません。 お手数をおかけしますが、 どなたか分かる方がいらっしゃったらお願い致します。

  • エクセルの背景色を数値化

    エクセルについての質問です。 例えば10×10の100マスのセルに ランダムに8色のセルの背景色が設定してあり、 それぞれのセル上に自動で背景色が赤なら「1」、 青なら「2」・・・等の表示を行う事は可能でしょうか? 宜しくお願い致します。

  • エクセルのセル内の数値を変えたい

    他部署からコピーしたシート内のセルに00001234という数値があります。この数値から0000を取り1234という数値にしたいのです。列に100行くらいありますので、行を一括で行いたいのです。方法を教えていただきたいのですが、よろしくお願いいたします。

  • エクセルVBA 条件にあうときセルを塗りつぶすには?

    エクセルVBA 条件にあうときセルを塗りつぶすには? エクセルVBAについて教えてください。 _________A 列 _________B 列_________C列_________D列 -------------------------------------------- 1行| 基準値_________ 5_____________1____________8 2行| りんご____________1_____________9____________0 3行| みかん___________12___________5____________3 4行| ぶどう____________15___________7____________8 5行| バナナ____________3_____________1____________4 上図のようにデータがあります。 (実物は列行共に膨大です。また条件を4つ以上つける予定なので条件付書式は使えません) 各列の基準値に対して、セルの増減が、0以下のときに黄色に、5から8のとき大きくなるときに赤、9以上のときに青にセルの色を塗りつぶしたいです。 どのようにすればよいでしょうか? B列の場合、基準値が5です。 B2のセルの場合、基準値5と1(B2セル)の増減は-4です。 増減が0以下のときは黄色に、増減が5から8のときは赤に、増減が9以上のときに青にするので、このときは黄色に塗りつぶします。 B3のセルの場合、基準値5と12(B3セル)の増減は7です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 B4のセルの場合、基準値5と15(B4セル)の増減は10です。 増減が9以上のとき青色に塗りつぶすので、このセルは青色に塗りつぶします。 C2のセルの場合は、C列の基準値は1(C1セル)です。 基準値1と9(C2のセル)の増減は8です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 よろしくお願いいたします。

  • エクセルについての質問です。

    エクセルについての質問です。 BOOK1、BOOK2、BOOK3のエクセルデータがあり BOOK1をメインと考えて BOOK2、BOOK3のシートの指定したセル (たとえばシート1のA列1、2、3行B列1、2、3行C列1、2、3行) からデータをBOOK1のシート1にその部分のデータを 取り込む方法が知りたいです。 色々と調べてみましたがわかりません。 初心者ですのでご教授お願いします。 宜しくお願いします。

  • 特定のセルの数値の行数だけコピーしたい

    お世話になります。 Excel2002で次のことをやろうとしています。 特定のセルに表示されている数値の行数だけコピーする。 これを、マクロを使って実行したいのですが、その方法が思いつきません。 どのようにしたら良いかお教えください。 [コピー元]のシートの"J53"のセルに、例えば「13」が表示されています。 この「13」がコピーする行数です。 このシートには多くのデータが入っていますが、そのうちの"A1"~"G13"だけのセルをコピーし、[コピー先]のシートの"A8"~"G20"に貼り付けるものです。 コピーする行数を表示しているセル"J53"は、常にこの位置です。 コピーするデータの列は常に"A"~"G"で、変わることはありません。 コピーするデータの行は、始まりは常に"1"からで、最後は"J53"に表示されている数値の行です。 コピーする行数を示す"J53"に表示される数値は「1」~「52」の範囲内です。 コピー先の位置は、[コピー先]のシートの"A8"~で、変わることはありません。 類似の質問を探したり、他にもネット上で探したのですが見つかりませんでした。 よろしくお願いします。

  • セル中の”パーセントの数値”によって字の色を変更

    エクセルマクロの機能でセル中の”パーセントの数値”によって字の色を変えて表示させたいと考えています。下記のようなことは可能なのでしょうか? F列3行目と4行目に”パーセントの数値”があります(例:95.23%)。 ここに、下記のような条件で数値の色が変わるようにしたいのですがエクセルのマクロで実現することは可能でしょうか? F列3行目:90%~108%は太字の緑色。0~80%若しくは108.1%以上は太字の赤色。 F列4行目:75%~90%は太字の緑色。0~90%若しくは90.1%以上は太字の赤色。 もし、お時間ある方がいらっしゃりましたらアドバイス頂ければ嬉しい限りです。 恐れ入りますが宜しくお願い致します。

  • OfficeExcel2003:マクロを用いた特定行のセル毎の条件判定

    Microsoft Office Excel 2003を用いて簡単なデータ管理表を作っています。 その中で特定列の各セルに格納された値が一定の条件を満たした際に そのセルの設定を変更するマクロを実装したいと考えています。 ちょっと分かりづらいかもしれないので具体例を挙げます。 例えばB列の各セルに数値データが格納されているとします。 その数値データが100以上ならばそのセルの背景色を青に、-1以下ならば背景色を赤に変更する。 といった感じです。 全データ数(行数)は不定で必要があれば増やせるようにしたいです。 1データは複数行にまたがっており、判定する項目(列)はセルの結合を行っています。 また、一定行間隔で項目の見出しを記した行が挿入されています。 そのせいか、自分なりに組んでみたマクロはセルの走査がうまくいかず、オーバーフロウを起こしてしまいました。 結合セルでも問題なくデータ入力されている最後のセルまで順に検索していく方法はありますか? どなたか御存知の方いらっしゃいましたら、ご教授お願いします。 また、ネットで調べるのにも少し限界があるようなので 逆引き事典的に扱える、良いVBAの書籍がありましたら教えて頂けるとありがたいです。

  • Jtableの特定のセルの背景色や文字色について

    Jtable内部の特定のセルの背景色や文字色、フォントの変更に関して質問があります。25行30列のJtableの20行20列目のセルの背景色だけ赤色にしたい場合、具体的にどの様にプログラミングすれば良いでしょうか? サンプルソースなどを教えてくださるとありがたいです! javaに関して詳しい方、ぜひともお力を貸してください!

    • ベストアンサー
    • Java

専門家に質問してみよう