関数でいう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
こんな感じで考えましたがうまくいきません。
(茶の数も一緒に数えたいけど考え付かないので悩んでいます。)
特に条件の "*ビール" のところが問題ありそうです。別の方法でいいものがあればそちらでよろしくお願いします。
変更前
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が多分抜けてるので書き足してます。
文字列検索は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)
ありがとうございます。
助かりました。
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 を用います。
ありがとうございます。
助かりました。