人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

マクロを教えてください。お願いします。
関数でいう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
こんな感じで考えましたがうまくいきません。
(茶の数も一緒に数えたいけど考え付かないので悩んでいます。)
特に条件の "*ビール" のところが問題ありそうです。別の方法でいいものがあればそちらでよろしくお願いします。


●質問者: zuguimo
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:A1 AS NeXT いもの お茶
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● KUROX
●35ポイント

変更前

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が多分抜けてるので書き足してます。

◎質問者からの返答

ありがとうございます。

助かりました。


2 ● freemann
●25ポイント

文字列検索は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)

◎質問者からの返答

ありがとうございます。

助かりました。


3 ● きゃづみぃ
●20ポイント
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 を用います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ