[[20080225164057]] 『オートフィルタ時に1行置きに塗りつぶす』(のの2) ページの最後に飛ぶ

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

 

 『オートフィルタ時に1行置きに塗りつぶす』(のの2)

 WIN…XP EXCEL…2003
 いつもお世話になっております。
 早速なのですが、データにオートフィルタをかけて必要な分だけを表示させて
 います。それでも数千行になるので1行おきに色をつけたら見やすいかな?と
 思って 条件付書式で =MOD(ROW(),2)=0 を入れて塗りつぶしてみたのですが…。
 偶数と奇数行で塗分けになるので、行によっては白いところが続いたり塗りつぶしが
 続いたりしてしまいます。
 オートフィルタをかけた状態で、1行置きに塗りつぶすいい方法はないでしょうか? 


 SUBTOTAL関数と組み合わせてみるのはいかがでしょう?
 
 例えば、A1にタイトルがあり、A列にデータが隙間無くある場合
 =MOD(SUBTOTAL(3,$A$2:$A2),2)=1
 等としてみるとどうなります?
 
 (キリキ)(〃⌒o⌒)b

 マクロでの一例です。
 少し時間がかかるかもしれませんが,一応色分けできるようです。
  オートフィルター実行後にマクロを走らせてください。
  下記では赤色が付きます。3を他の数値にかれれば別の色分けになります。(夕焼)

 Sub test()

 startrow = ActiveSheet.UsedRange.Row
 rowwidth = ActiveSheet.UsedRange.Rows.Count
 lastrow = startrow + rowwidth - 1

 For i = 1 To lastrow

 If Rows(i).Hidden = False Then
 If n = 1 Then
 Rows(i).Interior.ColorIndex = 3 ’色番号
  n = o
  Else: n = 1
  End If
  End If

  Next

 End Sub


 (キリキ)(〃⌒o⌒)bさん
  A列のみ範囲指定をして条件付書式の数式の所を =MOD(SUBTOTAL(3,$A$2:$A2),2)=1
 にしてみましたが…1行置きに塗り分けにはなりませんでした。

 例えば、今の状態では9 10 11 19 20 27 28行目が表示されているのですが、その内の
 9行目と28行目のセルのみ塗りつぶしであとの間のセルは塗りつぶしになっていません。

 データはAB列まで入っているので、AC列に上記の数式を入れ、オートフィルタを
 かけた状態でダブルクリックすると…表示されている列のみ「TREU」「FALSE」が交互に
 表示されました。
 なにが違うんでしょう…。

 (夕焼)さん
 マクロでもできるんですね。そりゃそうですよね…。
 けれど自力で応用が効かないのが難点なのです(>_<)

 (のの2)


 (キリキ)(〃⌒o⌒)bさん
 出来ました!!!
 データのあるA〜ABまでを範囲指定して =MOD(SUBTOTAL(3,$A$1:$A1),2)=1 
 で塗りつぶしをしてみたところ、うまく行きました。ありがとうございます!!!
 ところで…もうひとつ教えて欲しいのですが。
 $A$1:$A1 もしくは $A$2:$A2 っていうのはどういう意味なんでしょう。 

 (のの2)


 キリキさんの上手くいったとのことで別案を。

 こんな感じでもあり?
 AC2のセルを選択して、挿入>名前>定義
 名前に 行高さ と入力し、参照範囲に =GET.CELL(17,Sheet1!A2) で OK

 AC2のセルに =IF(行高さ,1,"") を入力して、必要数だけ下にコピー

 条件付書式で、数式が =MOD(COUNT($AC$1:$AC2),2)=0 で書式をお好みに設定

 以上

 (川野鮎太郎)


 (川野鮎太郎)さん
 教えて頂いた方法でも出来ました。いろんな方法があるんですね。
 でも、何がなんだか分かりません(・ω・;)
 日本語で言うとどんな指示をしていることになるのでしょうか…?

 この場合は、範囲指定するセルはA2からスタートするんですよね?
 最初、A1から範囲指定をしていたらまだら模様になり…焦りました、、、
 (のの2)


 川野鮎太郎さんがお忙しいようですので・・・。
「=GET.CELL(17,Sheet1!A2)」は Sheet1!A2セルの
 行の高さを調べる式です。
 表示されている行は、その行の高さが
 表示されていない行は、「0」が返されます。

 それぞれをバラバラにして、以下のような事を試して見るのはどうでしょう。
						=IF(D11,1,"")		
				番号	=行高さ	↓	=COUNT($E$10:E11)	
	[A]			[C]	[D]	[E]	[F]	[G]
[1]	イ		[11]	2	13.5	1	1	FALSE
[2]	1		[12]	3	13.5	1	2	TRUE
[3]	2		[13]	4	13.5	1	3	FALSE
[4]	3		[14]	5	13.5	1	4	TRUE
[5]	1		[15]	6	13.5	1	5	FALSE
[6]	2		[16]	7	13.5	1	6	TRUE
[7]	3		[17]	8	13.5	1	7	FALSE
[8]	1		[18]	9	13.5	1	8	TRUE
[9]	2		[19]	10	13.5	1	9	FALSE
[10]	3		[20]	11	13.5	1	10	TRUE
								=MOD(F11,2)=0
 A1セルに見出しをつくり、10行目まで適当なデータを入力します。
 11行目から、2〜10行目の状態を表示することにします。
 C11:C20には、分かりやすいように対応する行番号を入力。
 D11セルを選択した状態で、
 ○名前に 行高さ と入力し、参照範囲に =GET.CELL(17,Sheet1!A2) で OK
 をします。
 D11を「=行高さ」とし20行目までフィルドラッグ。
 E11,F11,G11にそれぞれ式を入力し、20行目までフィルドラッグ。

 A1:A10の範囲にオートフィルタをかけ、適当に絞り込むと
 表示されていない行に対応するD11:D20のセルの値が「0」になります。
 それに伴い、E,F,G列の結果が変わり 最終的には
 G列に「TRUE」と表示された行に塗りつぶしがされます。

 (HANA)


 キリキさんもお忙しいようなので
 >$A$1:$A1 もしくは $A$2:$A2 っていうのはどういう意味なんでしょう。 

 範囲選択をして↓この式を条件付き書式に書き込むと
=MOD(SUBTOTAL(3,$A$2:$A2),2)=1
        ~~~~~~~~
~~~~~~の部分が
  $A$2:$A3
  $A$2:$A4
のように変わっているのがわかると思います。
SUBTOTAL(3,・・・の関数は
  オートフィルターをかけた状態で
  非表示の行を無視してCOUNTA(空白でないセルの個数を数える)していますので
空いたセルに=SUBTOTAL(3,$A$2:$A2)と入力して、下にコピーすると
A2から空白行がなければ、1,2,3・・・と連番がつきます。
のの2さんがご質問された
=MOD(ROW(),2)=0 の式の行番号ROW()の代わりをしているのですネ。
                           (oni)しゃしゃり出たけど説明はヤッパ下手ダ(T▽T)


 (HANA)さん
 丁寧にありがとうございます。いつもすみません;;;
 うっす〜らとですが理解できました。←頭の構造が文系なので理解力が低いのです(TдT)
 ところで…
 =CELL()という関数をはじめて使ったのですが、 =CELL(17,〜 となっている「17」は
 何の意味があるのでしょう???
 「高さ」を指示する数値が「17」かなと勝手に推測してみたのですが。

 (oni)さん
 どうもありがとうございます。
 カウントする範囲を表していたんですね(>_<)
 それで、最初のセル番地は固定しないといけないから絶対番地をつけていたんですね。
 「$A$2:$A2」は一体なんなんやろう…とういモヤモヤ、すっきり晴れました!
 ありがとうございます。

 (のの2)


 GET.CELLに関しては、Webを探してみて下さい。
 =GET.CELL(番号,範囲)の様に書き
 番号によって該当セルのどの情報を返すかが変わります。
 セルの色番号を返す38番などは、過去ログにも
 たくさん見られると思います。

 cf.「関数 G 一覧 エクセル 4.0 マクロ」
http://excel4macro.blog86.fc2.com/blog-category-7.html

 この式は、セル内に直接入力して結果を返す事が出来ません。
 使用する場合は、名前を定義するのですが
 数式内の「範囲」の部分が相対参照になるので
 少しわかりにくいかもしれません。

 >AC2のセルを選択して、挿入>名前>定義
 >名前に 行高さ と入力し、参照範囲に =GET.CELL(17,Sheet1!A2) で OK
 と有りますが、AC2セルに「=行高さ」とした場合 ↑のSheet1!A2セルの情報が表示されます。
 AC3セルに「=行高さ」とした場合は、Sheet1!A3セルの情報が表示されます。

 >この場合は、範囲指定するセルはA2からスタートするんですよね?
 >最初、A1から範囲指定をしていたらまだら模様になり…焦りました、、、
 どのセルを選択した状態だったのか
 他の数式はどの様に入力したのか
 はっきりしませんので違うかもしれませんが、
 目的の行と一つずれた行を参照しセルの色も一つずれていたのかもしれません。

 たとえば、2行目の行の高さが「0」(非表示)になった場合
 AC2セルに入力した式の"行高さ"が「0」になる必要がありますが
 A1セルを参照して居た場合は0にはなりません。

 (HANA)


 (HANA)さん
 CELL関数ではなくて、GET.CELL関数なんですか…。
 しかも
 >セル内に直接入力して結果を返す事が出来ません。
 とは…。なんてややこしいというか面倒なというか(TдT)
 とにもかくにも「17」の謎が解けたのですっきりしました。ありがとうございます。

 (のの2)


 あれれ。。。
 のの2さん、ごめんなさいm(_ _)m
 見落としてました・・・
 
 oniさん、フォローありがとう^^
 
 (キリキ)(〃⌒o⌒)b

コメント返信:

[ 一覧(最新更新順) ]


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