[[20130321224818]] 『同じ値のA列セルの行に色』(ピボット) ページの最後に飛ぶ

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

 

『同じ値のA列セルの行に色』(ピボット)

 A列で重複している値の行全体に条件付き書式で色を付けたいです(2色ストライプ)
 下の例でいうと1、2行目の行は青色
 3、4、5行目は白色、6行目は青色、7行目は白色
 データ量が多くなってきて色分けしないと大変になってきました。
 お助け下さい。

  A
  1
  1
  2
  2
  2
  3
  4


 私のようなエクセル素人にとっては難問だねぇ。エキスパートさんからの回答を楽しみに心待ち。
 お呼びじゃないだろうけどVBA。

 Sub Sample()
    Dim c As Range
    Dim myColor As Long

    myColor = vbCyan
    Cells.Interior.ColorIndex = xlNone

    For Each c In Range("A1", Range("A" & Rows.Count).End(xlUp))

        c.EntireRow.Interior.Color = myColor
        'c.EntireRow.Range("A1:J1").Interior.Color = myColor '色つけ範囲を限定するならこっち
        If c.Value <> c.Offset(1).Value Then
            If myColor = vbCyan Then
                myColor = vbWhite
            Else
                myColor = vbCyan
            End If
        End If

    Next

 End Sub

 (ぶらっと)

 1,2行目・・・蒼
 3,4,5行目・・白
 6行目・・・・蒼
 7行目・・・・白
 すなわち数値が変わる毎に色を変更。
 あるいは「数値」が重複があっても1,2,3・・・と連番であれば、
 1,3,5 (奇数)・・・蒼
 2,4,6 (偶数)・・・白  等々

 > すなわち数値が変わる毎に色を変更。

 ん? 何色に変更?

 >あるいは「数値」が重複があっても1,2,3・・・と連番であれば

 だね。もし、実際のデータがそうなっていれば。

 追記)↑で偉そうに 【ん?】なんてレスしたけど、素人なりに考えたのは
    数式で、その行までにA列に登場する一意の値の個数が奇数なら青、偶数なら白かなと。
    で、自分では全く無理だけど、MSの解説ページなんかにでてくる FREQUENCYを使った方法で求めて・・
    ただ、これが例の Ctrl/Shet/Enter による式で、それを条件付き書式の数式として
    指定する方法がわからないので。
    どこかに作業列をおいて、そこに数式を記述して、条件付き書式では、その列を参照するってのは
    できるかもしれない。

    でも、いずれにしても、私が、そのFREQUENCYを使った式を全く理解できないので。

 (ぶらっと)

 1行目は「蒼」
 2行目 条件付き書式 数式「=MOD(SUMPRODUCT(($A$1:$A1<>$A$2:$A2)*1),2)=0」書式「蒼」
 3行目以下 書式コピー

 あるいは
 1行目 条件付き書式 数式「=MOD($A1,2)=1」書式「蒼」
 2行目以下 書式コピー


 条件付書式

 数式が =MOD(COUNT(0/FREQUENCY(A$1:A1,A$1:A1)),2)=0  青色設定

 ※111222333111 とか 同じ数値が別グループになるとNG。

 (GobGob)

 さらに追記)もし、A列が文字列限定なら、C/S/E ではなく 通常の =COUNT(INDEX(1/(MATCH(領域,領域,0)=(ROW(領域))),))
       で取得可能と、これもMSのページに書いてあったので、これを条件付き書式の式に設定することはできるかも。
       でも・・・膨大な数のセルに重い式を設定すると、ブックがめちゃめちゃ重くなりそうな・・・
       やるとしても、やっぱり作業列に式を書いて、各セルの条件式は、その作業列を参照するのかな?

       ただし、GobGobさんの指摘と同じく、AAAABBBBCCCCAAAA なんて並びはだめ。

 (ぶらっと)


みなさんありがとうございます。
おかげでうまくできました。
ついでというか・・
B列に金額がはいいているのですが
C列に下記のように集計も出来ますでしょうか

  A  B    C
  1  500   700
  1  200
  2  200   600
  2  100
  2  300
  3  600   600
  4  800   800

(ピボット)


 C1 : =SUMIF(A:A,A1,B:B)

 C2 : =IF(A2<>A1,SUMIF(A:A,A2,B:B),"")

 C2を下にフィルコピー とか?

 (ぶらっと)

 C1セル =IF(COUNTIF(A$1:A1,A1)>1,"",SUMIF(A:A,A1,B:B))
 下にフィルコピー

 という方法も。

 (se_9)

コメント返信:

[ 一覧(最新更新順) ]


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