ここから本文です

エクセルマクロで特定の文字を含まない場合の処理についてご教授ください。

raz********さん

2013/6/1921:08:49

エクセルマクロで特定の文字を含まない場合の処理についてご教授ください。

シートのA列セルの文字列に"★"が含んでいない場合にB列セルに"1"を記入したいと思います。
私の方法では、"★"が含んでいても含んでいなくても"1"が記入されてしまうのですが、
どのようにすればよいのでしょうか。

Sub TEST()

For c = 1 To Cells(Rows.Count, "A").End(xlUp).Row

If Cells(c, "A").Value <> "*★*" Then Cells(c, "B").Value = "1"

Next

End Sub

補足補足します。
Bセルには、元々何らかの値が入っているので、"★"を含む場合は、Bセルの値はそのままにしたいと思います。
ちなみに
Else
Cells(c, "B").Value = " "
End If
をつけると、"Elseに対するIFがありません"とデバッグとなります。

閲覧数:
391
回答数:
2

違反報告

ベストアンサーに選ばれた回答

mr_********さん

2013/6/2011:45:41

通常の比較ではワイルドカードは使えない。

If Instr(Cells(c, "A").Value, "★" ) = 0 then

とか。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

x_y********さん

編集あり2013/6/2106:02:16

補足に関して
★がある場合にB列データを変更しない方法
Cells(c, "B").Value = " "を消す

又は

If not Cells(c, "A").Value Like "*★*" Then Cells(c, "B").Value = 1

構文エラーになる理由は無いですが・・・
最初の回答者のような記載はエラーとなりますし、Likeが入っていないので検索は出来ないはずですが。

下記方法では構文エラー
if a=b then c=d
else
e=g
end if

下記のような構文にする必要があります。
if a =b then
c=d
else
e=f
end if

又は

if a=b then c=d else e=f





---------------------------------------------
下記方法で如何でしょう。


Sub TEST()
Dim c As Long

For c = 1 To Cells(Rows.Count, "A").End(xlUp).Row

If Cells(c, "A").Value Like "*★*" Then
Cells(c, "B").Value = ""
Else
Cells(c, "B").Value = 1
End If
Next

End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる