質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1109閲覧

VBA 文字検索

Yoshikun_0945

総合スコア224

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/04/13 01:12

ボールドテキスト#実現したいこと
文字の検索を行いたいです。

##文字列検索
スタート位置:操作対象になっているセルの1つ左隣のセル
検索の方向:スタート位置から左に進む
検索の結果、文字列があった場合:検索した文字の右隣の文字を数値型の変数に取得する
文字列がなかった場合:左に進む
すべてのセルになかった場合:数値型変数に0を入力する

これってInstrか、Findを使用すればいいですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/04/13 01:23

何で実現しようとしているのですか? VBAの関数(マクロで使う)であるInStrと、ワークシート関数(ワークシートのセルで使う)であるFindが併記されているのですが。
coco_bauer

2017/04/13 04:37

数値型に変換するのは検索した文字列の右側にある1文字ですか、それとも複数の文字ですか? "ABC"を"abcdABC234"から探した場合、取得したいのは2なのか234なのか?
guest

回答2

0

ベストアンサー

まず、それぞれの関数の意味について。
FINDは、セル範囲の中から対象の文字列を含むセルを見つける関数で、戻り値は見つけたセルです。
INSTRは、文字列の中から対象の文字列を見つける関数で、戻り値は見つけた桁位置です。

ちなみにFINDには後ろから検索する機能があります。
InStrには後ろから検索する機能はありませんが、別にInStrRevという後ろから検索する命令があります。


文脈から察するに、「操作対象になっているセル」の1行に対して右から順に特定の文字列を含むセルを検索していきたいのだと思います。
つまりFINDではないかと思います。

例えばA2:F2の範囲で'ABC'を右から検索したい場合は

Dim rng As Range Set rng = Range("A2:F2").Find( _ What:="ABC", _ SearchDirection:=xlPrevious)

のような指定をするとできます。

'ABC'を含むセルが見つかればそのセル、なければNothingがrng変数にセットされます。


>「文字列があった場合:検索した文字の右隣の文字を数値型の変数に取得する 」
この部分が受け取り方次第になるのですが、
・「見つけたセルの右隣のセルの値を数値型の変数に取得」したい
この場合、FIND結果のセルからColumnを取得し、右隣のセルの値を取得すればいいです。

・「見つけたセルの値の中で、特定の文字列の右隣の文字を数値型の変数に取得」したい
この場合、FIND結果のセルに対してINSTRを行い右隣の文字を取り出すことになります。

以上、参考になれば幸いです。

投稿2017/04/13 02:56

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

検索の結果、文字列があった場合:検索した文字の右隣の文字を数値型の変数に取得する

という処理をするならばInStrを使います

Findでも部分一致検索はできますが、

Dim Rng As Range Set Rng = Cells.Find(What:="hoge", LookIn:=xlValues, LookAt:=xlPart)

「検索した文字の右隣の文字」を取り出すためには位置情報が必要なので、結局InStrを使うことになるでしょう

投稿2017/04/13 02:10

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問