Excelでセルが空白の時にカウントしない方法

このQ&Aのポイント
  • Excelで名簿の整理をする際に、空白のセルをカウントしない方法を探しています。
  • VBAを使用して、文字色で個人を識別し、カウントしていますが、名前を削除して再計算すると、カウント数が減りません。
  • 条件付き書式を使用して、セルが空白の時に文字色が白になるように設定しても、カウント数が減らない問題があります。
回答を見る
  • ベストアンサー

Excelでセルが空白の時にカウントしない方法

初めまして。 私はExcelの初心者で、Excel2010を使っています。 名簿の整理をするにあたって 黒字は男性、赤字は女性にし、それぞれの人数を 色で識別しカウントするやり方をVBAで行いました。 Function COUNTCOLOR(data As Range, color As Integer) Application.Volatile Count = 0 For Each C In data If C.Font.ColorIndex = color Then Count = Count + 1 End If Next C COUNTCOLOR = Count End Function 上記のもの(他サイトから引用)を入力し、上手く作動したのですが 名簿の名前をDelし再計算後、カウント数が減りません。 手作業で一つ一つセル内の文字色を 白にするとカウント数が減ります。 しかし条件付きの書式でセルが""の時に文字色が白になる式を 設定してもカウント数は減りませんでした。 どのようにしたら空白の時にカウントさせないよう出来ますか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (701/1449)
回答No.1

空白を数えなければいいのですね If C.Font.ColorIndex = color Then のところを If C > "" And C.Font.ColorIndex = color Then に変えればいいです。

その他の回答 (2)

  • kichikuma
  • ベストアンサー率18% (202/1080)
回答No.3

なるほど。初心者でVBAとVBの違いに気がつかなかったようですね。 ExcelはVB(Visual Basic)ではなくVBAです。 違うものなので、質問を改めた方が良いかと思います。 あと、技術者向なので初心者はかけ離れ過ぎです。

  • doraneko66
  • ベストアンサー率11% (535/4742)
回答No.2

VBA良く知らないけど 分岐するとき if a == b if a === b if false == a とかじゃないの?

関連するQ&A

  • Excel2007に関する質問です。

    列内の赤い文字(※セルは塗りつぶされていません)がついているセルの個数を数えたいのですが、その文字の色は条件付き書式(ルールを組んでいます)で色をつけています。 通常、セルの書式設定から色を変えた場合には、それらのセルの個数を数えるマクロは、過去の質問では以下のようになるそうです。 Function COUNTCOLOR(data As Range, color As Integer) Application.Volatile Count = 0 For Each c In data If c.Font.ColorIndex = color Then Count = Count + 1 End If Next c COUNTCOLOR = Count End Function それで使うときは =COUNTCOLOR(A:A,3) この場合だと赤文字のセルを数えることができるそうです。 ですが、ルールによって文字の色が変わっているセルをカウントできません。あくまでルールであり、書式上は通常の黒色になっています。どうしたら、ルールで色を付けたセルの個数を数えるマクロを組めるのでしょうか?? よろしくお願いします!!

  • VBA? 色のついた文字のセルを数えたい

    色のついた文字の記載があるセルをカウントしたく 色々調べました。結局VBAで設定する方法にしたのですが 設定しテストをするとどうしてもカウント数が合いません。 全くの初心者の為何が間違っているのか全く分かりません。 どなたか教えて下さい。 VBAも全く知らない者でしたので 調べて以下のものをそのまま貼り付けました。 Function CCount(Rng As Range, idx) Dim R As Range Dim Cnt As Long Application.Volatile For Each R In Rng   If R.Font.ColorIndex = idx Then Cnt = Cnt + 1 Next R CCount = Cnt End Function Function GetIndx(Rng As Range) If Rng.Count > 1 Then   GetIndx = vbNullString   Exit Function End If GetIndx = Rng.Font.ColorIndex End Function 何が間違っているのでしょうか?

  • Excel VBA に関する質問

    ExcelのVBA初心者です。 同じ列にランダムに配置された黄色のセルの「数」をカウントするために以下のようなコードを見つけました。確かにこれで列内の黄色のセルをカウントできるのですが、カウントした後でその列内の黄色のセルの数を変える(黄色であったセルを違う色にしたり、新たに黄色のセルにしたり)と、その結果が反映されません。どのようにコードを書きなおせば、随時列内の黄色のセルの個数が変わるたびにちゃんとカウントできるのでしょうか? Function color6(a As Range) Dim c As Range, cu As Long Application.Volatile For Each c In a If c.Interior.ColorIndex = 6 Then cu = cu + 1 Next color6 = cu End Function でやっています。

  • マクロで塗りつぶしセルのカウント

    マクロ初心者です。アドバイスをお願いします。以下のマクロですとB列の100行目までの塗りつぶしのセルのカウントは出来るのですが、シート上の全てをカウントしたいのです。1TO 100の100の部分をどう変更したら良いのか教えてください。 Sub セルの色数1() Dim I As Integer Dim Count As Integer Count = 0 For I = 1 To 100 If Cells(I, 2).Interior.ColorIndex <> xlNone Then Count = Count + 1 Next I Range("C1").Value = Count End Sub

  • エクセル 下線の付いた文字をカウントしたい

    ご覧いただきありがとうございます。 エクセルで下線の付いたアルファベットをカウントしたいのですが、関数では不可能という事を知り、色々調べた結果、VBAで下線の付いた【数字】をカウントする方法を知りました。 これを【アルファベット】をカウントするものにしたいのですが、【IsNumeric】の部分を違うものに変更すれば可能なのでしょうか? どのように書き変えればカウント出来るのか教えていただきたいです。 よろしくお願い致します。 ◯下線の付いた数字をカウントするマクロです。 ⬇︎ Function sumUnderline(myRng As Range) As Variant Application.Volatile For Each c In Intersect(myRng, ActiveSheet.UsedRange) If IsNumeric(c) And c.Font.Underline = xlUnderlineStyleSingle Then sumUnderline = sumUnderline + c Next End Function

  • エクセル(vba)で困っています

    みなさんのお知恵を貸していただきたいです。 セルに入力されている「左下から右上」への二重線をカウントしたいのですが、どうすればよいでしょうか。 1本線だけならカウントできるようにしているのですが、二重線の場合も必要になってしまいました。それぞれ別にカウントしたいです。よい案がありましたら教えてください。 現在使用しているコード Function borderscount(範囲 As Range) Dim cnt As long Dim cAs Variant For Each c In 範囲 If c.borders(5).LineStyle > 0 Or c.borders(6).linestyle > 0 Then cnt = cnt + 1 End If Next c Application.volatile Borderscount = cnt End Function どうぞよろしくお願いいたします。

  • 色のついたセルと文字を両方数えられるVBA

    VBAの初心者です。 エクセルで文字の色でカウントする為に以下のVBAをこちらで教えていただきました。 順調に快適にエクセルを使えていたたのですが今回同じエクセル内で 文字ではなくセルに色付けしたものもカウントしなければならなくなりました。 以下のVBAがあるからかよく言われている4.0マクロ関数ではうまくいきません。 以下のVBAに何かを足せば一方では文字色をカウントし 一方ではセル色をカウントすると言う事は可能でしょうか? どなたか力を貸してください Function CCount(Rng As Range, idx) Dim R As Range Dim Cnt As Long Application.Volatile For Each R In Rng     If R.Font.ColorIndex = idx Then Cnt = Cnt + 1 Next R CCount = Cnt End Function

  • Excel VBA

    Excel2007のVBAの初心者です。 列のなかにある黄色のセルの個数をカウントしたいと思い、いろいろ探しているとVBAにおいて以下のようなコードを発見しました。  Dim c As Range,cu As Long  Application.Volatile  For Each c In a  If c.Interior.ColorIndex = 6 Then cu = cu +1  Next  color6 = cu  End Function しかし、いざやってみると 「コンパイルエラー プロシージャの外では無効です」 と表示され、うまくいきません。コードが違うのかどうかも分からないし、この警告文の意味もわかりません。 どなたか詳しい方。よろしくお願いします。

  • エクセルでセルをカウントしたい!

    エクセルを使ってある言葉が出てくるセルの数をカウントしたいと 思っています。 たとえば一つのセル、 Aの1に「言葉の数を数えます。」 と文字がはいっていたとして、 これを=COUNTIF(A1:A1,"*数*")とすれば、 出てきた個数ではなく、セルの数として 「1」と返ってくると思います。 これを応用して、 Aの1に「数」と入力されていて、 Bの1に「言葉の数を数えます。」が入っていて、 =COUNTIF(B1:B1,"*数*")で数えるのではなく、 =COUNTIF(B1:B1,"*A1*")としてAの1の文字を 認識させてセルの数をカウントしたいんです。 しかしこれではエラーがでるし、 だからといって =COUNTIF(B1:B1,A1)では0になってしまいます。 どのようにすればA1の文字を参照させセルの数を カウントすることができるでしょうか?

  • 背景色のカウント方法 その~2

    いつもお世話になります。 Win7 Excell2010 です。 下記で No.2 tom04さんの「手作業で色を付けている場合のコードです」を採用させていただきました。 この時は「カウントした表」は A124:AF127 作成していてうまくいき大成功でした。 その後この表をいつも見る必要がありいちいちスクロールして見るのが面倒で上に移動したいと考えました。 前回の質問アドレス http://okwave.jp/qa/q8444714.html カウントする表は B5:AF8 カウントの対象となるのは B9:AF147 ということから私なりに考えて下記のように変更しました。 Sub 色付きセル() Dim i As Long, j As Long, k As Long, endRow As Long, endCol As Long endRow = ActiveSheet.UsedRange.Rows.Count endCol = Cells(5, Columns.Count).End(xlToLeft).Column If endRow > 147 Then Range(Cells(9, "B"), Cells(147, endCol)).ClearContents End If For j = 2 To endCol For i = 5 To 8 For k = 9 To 147 If Cells(k, j).Interior.Color = Cells(i, "A").Interior.Color Then Cells(i, j) = Cells(i, j) + 1 End If Next k Next i Next j End Sub ところがカウントしてくれるのですが「マクロボタン」をクリックするたびに倍数でカウントされます。 例えば参照図では C6 2 本当は 1 でなければ C7 2 本当は 1 でなければ 私が修正した上記のマクロのどこかに不具合があると思うのですが是非ともご指導いただけませんでしょうか。 よろしくおねがいいたします。 Tom04さんにご指導いただきながら勝手に修正したことをお詫びいたします。 お許しください。

専門家に質問してみよう