- 締切済み
エクセル 検索について
おはようございます。マクロ初心者です。 どなたかが作成したものをコピーして貼り付けて使用してみたのですが私の頭では修正できません。どなたか教えていただけませんか? よろしくお願いいたします。 質問ですが検索する文字数を2に設定すると当然ですが検索文字を3文字入れてしまうと検索にひっかかりませんので3文字目を削除してから検索しなければなりません。 だからといって文字数を3文字に設定すると2文字入れて検索した場合、最初の2文字があっているのに検索にひっかからなくなってしまいます。 検索する文字数は1~5文字ほどなのですがどの文字数でも検索に引っかかってくるようにするにはどのようにしたらいいのでしょうか? 説明が下手でわかりずらいかもしれませんがよろしくお願いいたします。 Sub test() Dim gmoji As String Dim lrow, ACrow, ACcol, i As Integer ACrow = ActiveCell.Row ACcol = ActiveCell.Column Application.ScreenUpdating = False Selection.SpecialCells(xlCellTypeLastCell).Select lrow = ActiveCell.Row gmoji = InputBox("名字を入力してください") For i = 4 To lrow If Left(Cells(i, 2), 3) <> gmoji Then Rows(i).EntireRow.Hidden = True End If Next i Cells(ACrow, ACcol).Select Application.ScreenUpdating = True
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- zap35
- ベストアンサー率44% (1383/3079)
#01です If Application.CountIf(Cells(i, 2), gmoji & "*") = 0 Then
- imogasi
- ベストアンサー率27% (4737/17069)
入力される氏名の文字数がその都度変わるとしても、Len(gmoji)で文字数は(Inputbox行の下以下行では)わかるから、 If Left(Cells(i, 2), 3) <> gmoji Then の比較する長さの上記では3に当たるところを If Left(Cells(i, 2), Len(gmoji)) <> gmoji Then に変えるだけの話だと見たが。
お礼
できました。自分では何時間も考えたり調べたりしたのですがわからなかったのでとても感謝しております。 ほんとにありがとうございました。
- zap35
- ベストアンサー率44% (1383/3079)
どうされたいのか良く理解していませんが、とりあえず If Left(Cells(i, 2), 3) <> gmoji Then の1行を If Application.CountIf(Cells(i, 2), gmoji & "*") Then とすれば入力文字が何文字でも前方一致で検索が可能です。
お礼
ありがとうございます。 説明が下手で申し訳ありませんでした。私のしたかったことはなんとか伝わったようです(^^;) 実際に使用してみると検索はできています。 ただ、今までは検索して引っかかった文字の列だけは残り、検索外のところは非表示になっていたのですが、それが逆になってしまいます。 検索して引っかかったところが消えてしまって、それ以外が残って表示されているという状態です。 できれば修正をおねがいできませんか? よろしくお願いいたします。
お礼
こちらもできました。いろいろな方法があるんですね。 参考になりました。 ほんとにありがとうございました。