[[20101204174446]] 『OKでもOKでもカウントしたい』(ジゼル) ページの最後に飛ぶ

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

 

『OKでもOKでもカウントしたい』(ジゼル)Excel2000

 A列にあるOKの件数をカウントしたいのですが、複数人がそれぞれ入力するようになっているため 「OK」だったり「OK」だったりします。
 全角のみカウントされるようになっています。COUNTIF(A:A,"OK")
 半角でも全角でも「OK」や「OK」と入力したらカウントできるようにするにはどうしたらいいのですか? 
 現在は、フィルタで「OK」だけ選択して「OK」に入力しなおしているのですが、もっといい方法があると思いながらフィルタをかけてます。
 ジゼル


 =COUNTIF(A:A,"OK")+COUNTIF(A:A,"OK")
 ではダメですか?

 修正する場合もA列を選んで置換したほうが早いかと思います。
 (Mook)

 こんばんは Mookさま

 すごい...こんなこと出来るのですね +なんて出来るのですね。 
 ありがとうございます。
 また修正方法も教えてくださって 置換なんて考えもつきませんでした。
 ジゼル


 置換も面倒臭いというものぐさな方(自分のことw)には、ユーザ定義関数と
 いう手もあります。下記のコードを標準モジュールにおいて、シートで定義した
 関数を使えるようになります。

 使い方は COUNTIF と同じですが、COUNTIFNW は全角、半角を
 COUNTIFALL は全角、半角、大文字、小文字 を無視して数えます。

 '--------------------------------------
 ' 全角・半角をカウント
 '--------------------------------------
 Function COUNTIFNW(searchArea As Range, countWord)
 '--------------------------------------
    Dim nWord
    Dim wWord
    nWord = StrConv(countWord, vbNarrow)
    wWord = StrConv(countWord, vbWide)

    If nWord = wWord Then
        COUNTIFNW = Application.WorksheetFunction.CountIf(searchArea, nWord)
    Else
            COUNTIFNW = Application.WorksheetFunction.CountIf(searchArea, nWord) _
              + Application.WorksheetFunction.CountIf(searchArea, wWord)
    End If
 End Function

 '--------------------------------------
 ' 全角・半角、大文字・小文字をカウント
 '--------------------------------------
 Function COUNTIFALL(searchArea As Range, countWord)
 '--------------------------------------
    Dim sWord
    sWord = UCase(StrConv(countWord, vbWide))
    COUNTIFALL = 0
    Dim r As Range
    For Each r In searchArea
        If UCase(StrConv(r.Value, vbWide)) = sWord Then
            COUNTIFALL = COUNTIFALL + 1
        End If
    Next
 End Function
 (Mook)

 Mook様
 このマクロの作動方法を教えて下さい。
 よろしくお願いします。
 (初心者)

 =SUMPRODUCT((ASC(A:A)="OK")*1)

 これでもできそう★

 (MJ12)

 追記:Mookさんのユーザー定義関数勉強させて頂きます♪

 SUMPRODUCT では A:A は使えないようなので、範囲を指定する必要はありそうですが、
 MJ12 さんのやり方の方がスマートですね。

  =SUMPRODUCT((ASC($A$1:$A$65536)="OK")*1)

 でテストしてみると、COUNTIF も SUMIF も全角・半角は識別するようですが、もともと
 大文字・小文字は識別しないようです。

 関数の仕様は難しい・・・。

 先に提示したユーザ定義関数は、標準モジュールにおいた後セルで
 =COUNTIFNW(A:A,"OK")

 のように使います。
 (Mook)

 Mookさん

 自分2007ですが…

 =SUMPRODUCT((ASC(A:A)="OK")*1)

 で動きますよ…これって関数の仕様で使えないって事ですか?

 この数式だと…大文字・小文字・全角・半角関係なくカウントしてます。。。

 なんか自分のがおかしいのかな(^^ゞ

 (MJ12)


 2000(2003以前)だと、1:65535 か、2:65536 がSUMPRODUCTの最高。
 BJ


 バージョンで違うんですね(^_^;)

 2000だと無理ですね…

 失礼しましたm(__)m

 (MJ12)

複数の人が入力するなら、「入力規則」を設定して、リストから「OK」しか入力できないようにするのはどうですか?(みど)

コメント返信:

[ 一覧(最新更新順) ]


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