[[20080805105301]] 『ピンク色で塗りつぶしてあり、かつ空欄以外のセル』(桜井) ページの最後に飛ぶ

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

 

『ピンク色で塗りつぶしてあり、かつ空欄以外のセルの数を数えたい』(桜井)

作成しているのは、任意でセルの色分けをした表です。

「条件付書式」ではなくて、セルを選択し塗りつぶしています。

ピンク色がついているセルは空欄と会社名が入っているものがあります。

ピンク色で塗りつぶされていて、
会社名も入っているセルの個数を数える方法をご教示いただきたくお願いします。

ピンク色のセル色は、38ということは調べました。

ピンク色のセルの数を出すところまでは、
こちらで「UFClrCntcc」を使うということを調べてできました。


 「UFClrCntcc」の関数のコードを載せてみられてはどうでしょう。

 おそらく、
 For Each 何とか1 In 範囲
  何とか2 = 何とか1のセルの色
  If 何とか2 = ピンク色 Then
   数 = 数 + 1
   End If
 Next

 の様に成っていると思いますので
 「数 = 数 + 1」の上にもう一つ
 If 何とか1.Value <> "" Then
 の様な条件を付ければ良い様に思います。

 (HANA)

 「UFClrCntcc」は「エクセルの学校」のダウンロードページにある以下のものではないかと。

http://www.excel.studio-kazu.jp/DL/#q10

 (独覚)

 はい。私もそう思いますが
 どうやらダウンロードして開かないと
 コードが分からない様なので。。。

 載せていただければ、ダウンロード出来ない環境の方からの
 レスもつきやすいのではないかと思いました。

 (HANA)

早々のご返答ありがとうございます。
大変失礼しました。

当方は日常的にあまりエクセルを使わないため、

コードの内容はほとんど理解することができません。

該当すると思われるものを↓に貼り付けます。

よろしくお願いします。

Public Function UFClrCntcc(adrs, clr)
'

特定のセル色の数
Dim sm As Variant, cv As Variant, fci As Integer, ad As Range

  sm = 0
   For Each ad In adrs
    fci = ad.Interior.ColorIndex
    If fci = clr Then
     sm = sm + 1
    End If
   Next
 UFClrCntcc = sm
 End Function

(桜井)


 >     sm = sm + 1
 の上側に
  If ad.Value <> "" Then
 下側に
  End If

 を入れて、やってみるのはどうでしょう。

 (HANA)

HANAさま
お答えありがとうございます。

試してみたのですが、

「EndSubが必要です。」

というダイアログボックスが出てきます。

また、上記を追記した後、

どのような手順をふめばよいのか、
具体的に教えていただけますと幸いです。

ご面倒お掛けしてすみませんが、よろしくお願いします。

(桜井)


 ↓のコードに成りましたか?
Public Function UFClrCntcc(adrs, clr)
'特定のセル色の数
Dim sm As Variant, cv As Variant, fci As Integer, ad As Range
  sm = 0
   For Each ad In adrs
    fci = ad.Interior.ColorIndex
    If fci = clr Then
     If ad.Value <> "" Then
      sm = sm + 1
     End If
    End If
   Next
 UFClrCntcc = sm
End Function

 このコードをコピーしてきた場所へ
 上書き貼り付けして下さい。

 何かメッセージがでる場合は
 再度そのメッセージを教えて下さい。

 >上記を追記した後、どのような手順をふめばよいのか、具体的に
 と言う事ですが、コード内に該当二行を追加して頂ければ
 特に手順はないのですが・・・。

 寧ろ、どの様な手順で追加したのか 教えて頂きたいです。

 現在貼り付けてもらったコードが、VBEに有りますよね。
 そのコードの「sm = sm + 1」の行の
 上側と、下側に一行ずつ追加してもらうだけなのですが・・・。
 どこか(End Function とか)消したりしてませんか?

 (HANA)

HANAさま

ありがとうございます。

ご指示通りに上書きしました。

先ほども何も削除せず、
2行追記しただけだったのですが、

今回は何もメッセージは出ませんでした。

この後、ピンク色のセルで空欄以外のものは、

どうやって算出すれば良いのでしょうか。

教えてください。

(桜井)


 ん?ピンク色のセルの数は出せたのですよね?
 同じようにやってみて下さい。

 >If ad.Value <> "" Then
 を追加したので、空欄以外の物がカウントされると思いますが。

 =UFClrCntcc( セル範囲 , 38)

 この関数(変更前の関数)を他の事にも使用するので有れば
 コードをコピーして、違う関数名で作成しておいた方が
 良い様に思います。

 例えば
Public Function UFClrCntccIb(adrs, clr)
'特定のセル色の入力があるセルの数
Dim sm As Variant, cv As Variant, fci As Integer, ad As Range
  sm = 0
   For Each ad In adrs
    fci = ad.Interior.ColorIndex
    If fci = clr Then
     If ad.Value <> "" Then
      sm = sm + 1
     End If
    End If
   Next
 UFClrCntccIb = sm
End Function

 とすれば、ワークシートには
 =UFClrCntccIb( 範囲 , 38)
 として下さい。

 (HANA)

HANAさま

おかげさまで、無事に算出できました。

ありがとうございます。

次の機会にに利用できるよう、

データを残して分かりやすくしておこうと思います。

そしてもっと勉強します。

本当にありがとうございました。

(桜井)


コメント返信:

[ 一覧(最新更新順) ]


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