[[20200421203754]] 『セルの色とセルの単語を条件にカウント』(優) ページの最後に飛ぶ

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

 

『セルの色とセルの単語を条件にカウント』(優)

はじめまして。
セルの色とセルの単語を条件にカウントしたいです。
下記の式だと1カウントを1と表示してくれません。
どこを修正すればよいでしょうか。
宜しくお願いいたします。

Function CountColor(計算範囲,条件色セル,検索範囲,条件媒体)

 Application.Volatile
 CountColor = 0
 For y = 1 To 計算範囲.Columns.Count
 For x = 1 To 計算範囲.Rows.Count
 For w = 1 To 検索範囲.Columns.Count
 For Z = 1 To 検索範囲.Rows.Count
  If 計算範囲.Rows(x).Columns(y).Interior.ColorIndex = 条件色セル.Interior.ColorIndex And 検索範囲.Rows(Z).Columns(w) = 条件媒体 Then
 CountColor = CountColor + 1
 End If
 Next
 Next
 Next
 Next
End Function

< 使用 Excel:Excel2010、使用 OS:Windows10 >


>下記の式だと1カウントを1と表示してくれません。
どういうケースに、ですか?
説明してもらえますか?
相互に思い違いがあってはいけませんので。
(γ) 2020/04/21(火) 21:00

=CountColor(原本!$P$5:$P$134,媒体一覧!$T$3,原本!$N$5:$N$134,媒体一覧!$H4)

現状このような式を入れています。
ですが、式に当てはまっている場合、1カウントではなく2カウントしてしまいます。

説明分かりにくかったらすみません。
宜しくお願いいたします。

(優) 2020/04/21(火) 21:08


遅くなりました。
 (質問1)  
 =COUNTIF(原本!$N$5:$N$134,媒体一覧!$H4) は何が返りますか?
 (質問2)  
 原本!$P$5:$P$134  のなかで、媒体一覧!$T$3と同じ色のセルはいくつありますか?
 (質問3)  
 されたいことをもう一度正確に書いてもらえませんか?
 「セルの色とセルの単語を条件にカウント」のところです。どういうカウントなんですか?
 (日本語にすることは大事なステップです。)

 4重ループにする意味がちょっと分かりにくい。(二重ループは当然として)
 今のコードだと、色が一致するセルの数 × 単語が一致するセルの数 となりますね。
 それが求めるものなんですか?
(γ) 2020/04/22(水) 06:38

(質問1)
N列にあるH4と同じセル数をカウントしてくれています。
(質問2)
同じ色のセル数は固定ではなく、変動するのでなんとも言えません。
(質問3)
セルの色(P列)かつセル内の単語(N列)が一致した数をカウントしたいです。
分かりにくかったらすみません。

4重ループはforとnextを入れないとエラー出てしまう為、やむなくいれました。
入れなくても大丈夫なら、2重ループでも大丈夫だと思います。

お忙しいのに、すみません。
よければ教えてください。
お願いします。
(優) 2020/04/22(水) 09:18


>式に当てはまっている場合、1カウントではなく2カウントしてしまいます。
そのときのことを質問1、質問2で尋ねたのですが。

基準の色が「赤」、単語が「危険」だったとき。

  P列  N列
  赤     危険
  標準   安全
  標準  危険
の場合、いくつとカウントするんですか?

(γ) 2020/04/22(水) 10:37


エラー処理のことは考えてないけど、1重ループで十分じゃないんですかね・・
    Function 俺式関数_壱(色確認範囲 As Range, 条件色セル As Range, 単語確認範囲 As Range, キーワード As String) As Long
        Dim i As Long, c As Long

        For i = 1 To 色確認範囲.Rows.Count
            If 色確認範囲.Cells(i).Interior.ColorIndex = 条件色セル.Interior.ColorIndex Then
                If 単語確認範囲.Cells(i).Value = キーワード Then
                    c = c + 1
                End If
            End If
        Next i

        俺式関数_壱 = c

    End Function

(もこな2 ) 2020/04/22(水) 12:11


ちなみに、↓も参考になりそうです。
[[20200421221740]] 『複数条件で一致する箇所をカウント』(すみれ)

 ただし、DisplayFormatプロパティはユーザー定義関数では使えなかったはずなので
 本件では、そのまま採用というわけにはいかないとおもいますが・・・

(もこな2 ) 2020/04/22(水) 14:08


返信遅れてしまいすみません。

> P列  N列

  赤     危険
  標準   安全
  標準  危険
の場合、いくつとカウントするんですか?

この場合だと2カウントしてしまいます。

  P列  N列

  赤     危険
  標準   安全
  赤   危険
上記の場合だと4カウントです。
P列が赤だった場合、P列の赤の数×N列の危険の数というようなカウント数がでてしまいます。
(優) 2020/04/23(木) 09:06

ご返事拝見しました。
(この例では)行毎に見ていって、
・P列の色が基準とする色と一致し、
・かつ、N列が基準とする文字と一致した場合に、
ということなのですね。
4重ループは必要がない、ということを抑えていただければと思います。

コードについては、すでに指摘がありましたので、それを活用されればと思います。
(γ) 2020/04/23(木) 10:50


わかりました。
ありがとうございます!
一度試してみます。
(優) 2020/04/23(木) 11:20

すみません。
すぐに反応してくれず、F9を押してもだめでした。
式を入力しなおしたら反応してくれます。
カウントした数字は正しいです。

すみません。
お願いします。
(優) 2020/04/23(木) 17:30


 Application.Volatile

 これ、忘れてないですか?

(半平太) 2020/04/23(木) 20:02


>これ、忘れてないですか?
あぁっ、4重ループに気をとられてわすれてました。
ごめんなさい

(もこな2 ) 2020/04/23(木) 22:33


コメント返信:

[ 一覧(最新更新順) ]


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