[[20160718104541]] 『色が連続してつくセルの範囲にある色落ちがあるセ』(アルバイトを長く勤めさせたい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『色が連続してつくセルの範囲にある色落ちがあるセルを確認したいのですが』(アルバイトを長く勤めさせたい)

似たような質問があったのですがわからないので教えてください。

多数の列に数値が1列当り1000行〜10万行を超えて入っているシートが複数あります。

ある数値以下のセルを条件付き書式で色を付けているのですが、まれに色が連続して付くはずのセルに異常な数値が入っており色落ち状態の箇所が見受けられます。

列のセルに色が付く場合は100程度のセルに連続して付きます。

行   A   




350  色有
351  色有 
・   色有

405  色無 ←A列のセルで350〜450の中で405セルに色落ちがある場合


450  色有

現状は条件付き書式である数値以下のセルに赤色をつけてから検索と置換で確認しているのですが行数が多いと見落としが多く困っております。

パソコンに詳しいアルバイトにさせているのですが長続きしないのが現状です。

色が連続してつくセルの範囲にある色落ちがあるセルを見つけられるような書式はあるのでしょうか。

詳しい方教えてください。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 なぜ「色がつかないか?」を考えての質問。

 (1) その数値は「整数」なのか?「小数あり」なのか?
 (2) その数値は数式で計算された結果なのか?直接入力するデータなのか?
 
(GobGob) 2016/07/18(月) 12:10

GobGobさま

宜しくお願いします。

説明が拙くて申し訳ないです。

>(1) その数値は「整数」なのか?「小数あり」なのか?
⇒整数も、少数もあります。

  7 12 20 30.11 2.05 100 etc

>(2) その数値は数式で計算された結果なのか?直接入力するデータなのか?
⇒直接入力するデータ(元ファイルからコピーペーストしてます)

(アルバイトを長く勤めさせたい) 2016/07/18(月) 12:58


 ・小数有り
 ・コピペ (これは「計算」した結果をコピペ?)

 なら「演算誤差の結果」から条件付書式を設定している可能性ない?

 ROUND/ROUNDDOWN/ROUNDUPとかで小数点位置を固定して処理してみては?
(GobGob) 2016/07/18(月) 14:13

 >セルに異常な数値が入っており色落ち状態

 質問者自身が↑と言っている。つまり問題は「色落ち」ではなく「異常な数値」だ。

(とおりすがり) 2016/07/18(月) 14:31


GobGobさま

>・コピペ (これは「計算」した結果をコピペ?)
⇒元ファイルの素の数値をコピペしただけです。

>なら「演算誤差の結果」から条件付書式を設定している可能性ない?
 ROUND/ROUNDDOWN/ROUNDUPとかで小数点位置を固定して処理してみては?
⇒エクセル応用力は中学以下です。

行   A   



350 10.13 色
351 10.13 色
352 10.13 色
・   10.13 色
・   10.13 色
403 10.13 色
404 10.13 色
405  20.01 色無 ←A列のセルで350〜450の中で405セルに異常な数値が有るので色がつかない
406 10.13 色
405 10.13 色
405 10.13 色
405 10.13 色
405 10.13 色
450 10.13 色

上記のような状態を見つけたいのです。
行が多すぎると見落としが多いです。

(アルバイトを長く勤めさせたい) 2016/07/18(月) 14:43


人間の視覚に頼るにも限界があるというようなことですか。

(1)Excel2010ですから、r.DisplayFormat.Font.Color で条件付き書式の結果が得られるので、
 どこかのダミー列に、色つきは1 、色無しは 0 などと書き込む。
 (マクロで。なお、ユーザー定義関数の埋め込みは、DisplayFormatが機能しません。)

(2)判定方法ですが、
 ・前後10セルのうち、色つきが9個で、そのセルだけが色無しのものは、
  異常と判定
 ・場合によっては、色無しが2個あるケースも対象となりますか?
 ・これでも、端のほうで異常数値があると判定できないかな。

 実態に応じて工夫してみてください。

ところで、ある数値以下のというときの、その判定用数値は、全データで同一なんですかね。そうであれば、色は相手にせず数値で(1)部分の判定は可能ですね。

(γ) 2016/07/18(月) 16:58


γさん

>人間の視覚に頼るにも限界があるというようなことですか。
⇒おっしゃる通りです。手前どもの技術のなさです。

>r.DisplayFormat.Font.Color で条件付き書式の結果が得られるので、どこかのダミー列に、色つきは1 、 色無しは 0 などと書き込む。
 ((マクロで。なお、ユーザー定義関数の埋め込みは、DisplayFormatが機能しません。)
⇒せっかくの御助言ですが理解できません(大汗!!!)マクロ例教えて頂けませんでしょうか?

>判定方法ですが
 前後10セルのうち、色つきが9個で、そのセルだけが色無しのものは異常と判定
⇒セルに色が付く場合は100個のセルに連続して付きます 

>場合によっては、色無しが2個あるケースも対象となりますか?

  これでも、端のほうで異常数値があると判定できないかな。
⇒端の色無し、色無しの2個も関係ないです、色が無い歯抜け状態の箇所がわかればいいのです。

>ある数値以下のというときの、その判定用数値は、全データで同一なんですかね。
⇒同一ではありません、数値を変えて色が無い歯抜け状態の箇所を確認しています。

  

宜しくお願いします。

(アルバイトを長く勤めさせたい) 2016/07/19(火) 08:23


■(条件付き書式による色の取り出し方)
A列に条件付き書式で塗りつぶしがされているものとして、
色がついたセルのB列に 1 を書き込むコードは以下のとおりです。
参考にして下さい。

Sub test()

    Dim k As Long

    For k = 1 To 50     '50は仮置きの数
        If Cells(k, 1).DisplayFormat.Interior.ColorIndex <> xlColorIndexNone Then
            Cells(k, 2).Value = 1
        End If
    Next
End Sub


連続した色の場所を把握するには、
例えば、以下のようなコードが参考になるでしょう。

   For Each ar In Range(Cells(1, 2), Cells(50, 2)).SpecialCells(xlCellTypeConstants).Areas
        j = j + 1
        Cells(j, 4).Value = ar.Row                  '開始位置
        Cells(j, 5).Value = ar.Row + ar.Count - 1   '終了位置
        Cells(j, 6).Value = ar.Count                '長さ
    Next
色無しの領域は、上記の色有り情報から、割り出せます。

■質問に対する回答が私には理解しかねるので、あとはパスします。

聞きたかったのは以下のようなこと。
(1)色つきが2個連続して、色無しが1つ。その後、色つきが50個のときはどう判断?
 連続した色ありはいくつを以て、連続とみなすのか。

(2)色つきが100個連続して、色無しが1つ。その後、色つきが100個のときは異常値と判定するだろうが、
  色なし部分が2個連続したら?
  色なし部分が10個連続したら?
  色なし部分が100個連続したら?
  なにがしかの判定基準が必要になるだろうと質問したが、
  「そんなこと関係ない、自分が判断できる」ということなので、
  あとはそちらでやってください。

(γ) 2016/07/19(火) 21:23


こんにちは。

>現状は条件付き書式である数値以下のセルに赤色をつけて
異常値のセルに色をつけるほうが見つけやすいと思います。
紙に印刷すればさらに見つけやすいです。

あるいは、オートフィルタで、ある数値を超えるセル(異常値のセル)を
絞込み表示して、あいている列に目印の意味で、●とか×とか入力して
フィルタを解除すれば、キー操作でCtrl + ↓ で次の目印へ飛べますので
作業がしやすいです(なにをなさるのか存じませんが)。

( 佳 ) 2016/07/19(火) 22:35


γ様

おはようございます。

一部拙い文章で誤解を与えてしまいごめんなさい。

コード提示ありがとうございます。
エクセル非力ですが勉強させてもらいます。

>(1)色つきが2個連続して、色無しが1つ。その後、色つきが50個のときはどう判断?
⇒色無しの歯抜け状態なので『異常』と判断します。

>連続した色ありはいくつを以て、連続とみなすのか。
⇒100セルです(稀にMAX110の時ももあります)
 この100セルですが今までの半年分の実績値です。

>色つきが100個連続して、色無しが1つ。その後、色つきが100個のときは異常値と判定するだろうが
>色なし部分が2個連続したら?、10個連続したら?、100個連続したら?
⇒色つきが100個連続してから次の色つきがが出現するまで200セル程度色無しの状態が続きます。

>なにがしかの判定基準が必要になるだろうと質問したが
⇒γさんの言われる通りです。条件等の検討不足の結果がこのざまです。

>そんなこと関係ない、自分が判断できる
⇒時間は待ってくれないので無理がきつつあります。

>あとはそちらでやってください。
⇒途中のγさんへの返信文ですが確かに舌足らずで拙い内容でした申し訳ありません。
 今後も教えてください。
 
で、図々しくお聞きしたいのですが

>連続した色の場所を把握するには、以下のようなコードが参考になるでしょう。
⇒以下のようなコードは最初のコードの

 For k = 1 To 50 '50は仮置きの数

        If Cells(k, 1).DisplayFormat.Interior.ColorIndex <> xlColorIndexNone Then
            Cells(k, 2).Value = 1
        End If
    Next
 
 を置き換えて使えばいいのですか?

(アルバイトを長く勤めさせたい) 2016/07/20(水) 08:20


γさんへ

申し訳ないです。

色がついたセルのB列に 1 を書き込むコードは問題なくできたのですが

連続した色の場所を把握するマクロコード試したのですがエラーになります。

コード全文と解説をデータはA列にあるとしてお願いできないでしょうか?

(アルバイトを長く勤めさせたい) 2016/07/20(水) 10:37


>⇒色つきが100個連続してから次の色つきがが出現するまで200セル程度色無しの状態が続きます。
それなら、色無しの連続回数が200以下のところに警告を発することでいいのですね。

であれば、(実行できたという)私の提示したマクロで、
色無しに1を立てるように変更したうえで、
(つまり、If Cells(k, 1).DisplayFormat.Interior.ColorIndex = xlColorIndexNone Then
 に変更するという意味)
あとは、シート上の計算式で対応可能ではないですか?

具体的には、
C2: =IF(B2=1,C1+1,0)  色無しの連続回数を C列に計算し、
D2: =IF(C2=0,0,MAX(D3,C2)) その最大値を D列に計算して
D列が 1以上200以下のところがすべて問題箇所ですから、
フィルタオプションかなにかで抽出すればいいでしょう。

私は日中はアクセスしませんし、これ以上の持ちネタはありませんので、
ここまでとさせて下さい。
頑張って下さい。

(γ) 2016/07/21(木) 06:03


γさんへ

種々の御教示にお時間を割いていただき感謝致します。

この場をお借りして非礼等お許しくださいませ。

ありがとうございました。
(アルバイトを長く勤めさせたい) 2016/07/21(木) 07:18


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.