[[20080610161343]] 『塗りつぶしたセルを数えることが出来るときと出来』(ぷー) ページの最後に飛ぶ

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

 

『塗りつぶしたセルを数えることが出来るときと出来ないときの違い』(ぷー)

 いつも勉強させてもらってます。

 過去ログを見ながら

 Function CountIro(hanni As Range)
 Dim r As Range
 For Each r In hanni
     If r.Interior.ColorIndex <> xlNone Then CountIro = CountIro + 1
 Next
 Application.Volatile '
 End Function

 というように作ってみました。
 しかし、あるセルは正しい数字を返すのに、あるセルは全く違う数字を返したりするんです。
 同じシートでこのような現象が起こります。

 B列とC列を結合して1つのセルとしています。
 そのうえで2行目から20行目までにいくつ塗りつぶしたセルがあるのか数えたいため、
 B21とC21を結合したセルに、A列の塗りつぶしたセルの数を返すように範囲を指定しています。

 このようにセルを結合してたりする場合は、上記の様では駄目なのでしょうか?
 ご指導宜しくお願いします。


 どのセルにどういう式を入れているのかそのまま載せてはどうでしょうか?

 上記の説明では式の入ったセルが複数あるようにも一つだけとも書かれていてよくわかりません。
 (やっちん)


 やっちんさん、言葉足らずで分かりにくくごめんなさい。

 今回私が作成しているものは、
 A列には作業場所、B列からは1日〜31日の日付のある作業工程表のようなものです。

       A          B,C  D,E  F,G  H,I  J,K ・・・・・・  BR,BS 
                  1日 2日 3日 4日 5日    31日 月合計
  1 ○○○○
 2 △△△
  3 ◇◇
    ・
    ・
    ・
  21作業箇所計

 という感じです。
 ○○○○の作業場所で1日に作業したら、B2とC2を結合したセルを塗りつぶし、
 ◇◇の作業場所で3日に作業をしたら、F3とG3を結合したセルを塗りつぶすといった具合です。
 そして21行目のB列C列を結合したセルにに1日の作業箇所の合計、
 D列E列を結合したセルに2日の作業箇所の合計・・・を表示し、
 あわせて、BR列とBS列を結合したセルには各作業場所での1ヶ月の合計作業回数を表示したいのです。

 このような説明でご理解いただけますでしょうか。
 よろしくお願いします。

 (ぷー)


 ユーザー定義関数として使用しているのだと思いますが
 範囲指定がおかしい(そこが見たかったんですが・・・)か次の理由かです。
 このユーザー定義関数はセルに色を付けただけでは実行されません。
 F9を押して正しい値になるのであれば、そのためです。

 セルに色を付けるのが入力し易いからという理由でなければ
 色を付ける代わりに「○」を入力するようにして「○」の数をカウントする
 式を入れれば済みます。どうしても色が必要であれば、条件付書式で設定する
 のもいいですし。
 (やっちん) 

 やっちんさん、ごめんなさい。

 合計を表示したいセルには
 例えば、1日の合計を表示したいセル(A21)には =CountIro(B2:B20) というふうにしています。

 F9を押しているのですが、正しい数字のセルとそうじゃないセルがあるんです。

 ○とかにしたら簡単なのかもしれませんが、そういうわけにもいかず・・・

 数を数えるくらい自分でやるよって担当者言ってくださいましたが、
 腑におちなくて。

 何か他に理由があれば教えてください。

 (ぷー)

 A21に合計しているんですか?そういう説明には思えませんでしたが。

 おかしい数値が出ている数式の指定範囲は合っていますか?
 月合計だけが2倍になっているということとは違いますか?

 こちらではおかしい値は出てきませんねえ。条件付書式で色が付いたセルは
 カウントされませんがそれとも違うのかなあ。
 (やっちん)


 例えばA1:B2のセル範囲を結合して色をつけます。

 別のセルに
 =CountIro(
 と書き込んで、A1:B2セルを選択します。
 書き込まれた結果は、

 =CountIro(A1

 普通はこれ↑をこのまま使用すると思いますから、

 =CountIro(A1)

 こんな形になると思います。
 で、ユーザー定義関数で返された値は、1です。
 マクロでの検索範囲が、A1セルしか見てないから当然ですね。

 また、別のセルに
 =CountIro(
 と書き込んで、A1:C2セルを選択します。(C1:C2は色無し)
 書き込まれた結果は、

 =CountIro(A1:C2

 このままENTすると、

 =CountIro(A1:C2)

 こうなります。
 返された値は、4になります。
 C1:C2には色を塗ってないのに、なんで、なんで〜?

 ってな事ではないでしょうか?

 マクロでの検索範囲、A1:C2セルを1個1個見ているから当然ですね。
 書いてあるマクロにあわせた使い方をするか、
 使う状況に合わせたマクロを自分で造るかしないと思います。

 >腑におちなくて。
 セルに書き込まれた数式とコードの意味が解っていれば解ることだと思います。
 BJ

 コメントが遅くなり、申し訳ありません。
 他の仕事でバタバタしておりまして・・・

 やっちんさん、ごめんなさい。
 1日の合計を表示したいのは、B21のセルです・・。
 あと、月合計のセルでは2で割るようにしています。
 急いでいたもので、申し訳ありません。

 BJさん、まだまだ勉強し始めたばかりで、申し訳ありません。
 今の仕事が落ち着いたら、また頑張って見ます。

 お2人とも、ありがとうございました。

 (ぷー)

 もしかしてセルに網掛けをしてませんか?
 色が付いたセルだけでなく、網掛けもカウントされるようです。

 もう一つ、セルを塗りつぶしていないのと見た目が変わりませんが
 白で塗りつぶしてもカウントされます。
 (やっちん)

コメント返信:

[ 一覧(最新更新順) ]


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