マクロを教えてください。お願いします。

関数でいうCOUNTIFを使いたい。
以下A1からA5まで
十六茶
おーいお茶
さんぴん茶
トマトジュース
キリンビール

以上から"茶" または"ビール"を含むセルの数を取得したいのですが
DIM I,N AS INTEGR
N=0
FOR I = 1 TO 5
IF CELLS(I, 1).VALUE = "*ビール"
N = N + 1
END IF
NEXT
CELLS(1,6)=N
こんな感じで考えましたがうまくいきません。
(茶の数も一緒に数えたいけど考え付かないので悩んでいます。)
特に条件の "*ビール" のところが問題ありそうです。別の方法でいいものがあればそちらでよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/10/02 01:18:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント35pt

変更前

IF CELLS(I, 1).VALUE = "*ビール" THEN

N = N + 1

END IF

変更後

IF InStr(CELLS(I, 1).VALUE,"ビール")<>0 or

InStr(CELLS(I, 1).VALUE,"茶")<>0 THEN

N = N + 1

END IF

http://officetanaka.net/excel/vba/tips/tips33.htm

THENが多分抜けてるので書き足してます。

id:zuguimo

ありがとうございます。

助かりました。

2007/10/01 12:20:35
id:freemann No.2

回答回数335ベストアンサー獲得回数55

ポイント25pt

文字列検索はInStr()関数を使います。

InStr()関数の戻り値が0より大きければ、一致する文字列があったことになります。

以下のような感じになります

Dim iCount As Integer

Dim i As Integer

iCount = 0

For i = 1 To 5

If InStr(Sheets(1).Cells(i, 1), "茶") > 0 Or InStr(Sheets(1).Cells(i, 1), "ビール") > 0 Then

iCount = iCount + 1

End If

Next i

MsgBox CStr(iCount)

id:zuguimo

ありがとうございます。

助かりました。

2007/10/01 12:20:38
id:taknt No.3

回答回数13539ベストアンサー獲得回数1198

ポイント20pt
Sub Macro1()
'
' Macro1 Macro
'

'
Dim I, N As Integer
N = 0
For I = 1 To 5
If InStr(Cells(I, 1).Value, "茶") Or InStr(Cells(I, 1).Value, "ビール") > 0 Then
 
N = N + 1
End If
Next
Cells(1, 6) = N
End Sub

ある文字列が含まれているか調べるには InStr を用います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません