
下記のような記述だと1つめのsampleの位置(9文字目)は取得できても
2つめのsample(25文字目)の位置を取得することができません。
どうすれば2つめの文字列の位置を取得することができるのでしょうか?
moji = "This is sample text for sample."
n = InStr(moji, "sample")
使用OS:Windows XP
使用ソフト:Microsoft Excel 2003
ご存知の方がおられましたらご回答をよろしくお願いします。
No.5ベストアンサー
- 回答日時:
下記のどちらとも取れる表現だ。
質問例からは(2)かな。
(1)セルの探索
マクロの記録状態にして、操作で、編集ー検索をやってみて、記録されたコードをみて、自分の場合はどこを、どう修正したらよいか考え、疑問が多分残るだろうから、それに絞って質問する。
普通の質問はこっちの方だが。
ーー
(2)1セル内
>文章にある複数の同じ文字列の位置をそれぞれ
1セル内の文字列内の2度目以降の出現を聞いているのか
その場合は繰り返しを行い、nが0になった場合でInstr実行を終了する。下記のInstrの探索のスタートポイント(下記でs)を活用するのがミソだ。
Sub test01()
a = Cells(1, 1)
s = 1
Do
n = InStr(s, a, "dr")
If n = 0 Then Exit Sub
MsgBox Mid(a, n, 2)
s = n + 1
Loop
End Sub
探索しているのが、語句なら上例で「dr+スペース」などを考えれば
よいかもしれない。
ご回答を参考にして、下記のように作ってみました。
Sub test01()
s = "This is sample text for sample."
i = 1
Do
n = InStr(i, s, "sample")
If n = 0 Then Exit Sub
MsgBox n & "文字目にsampleがあります"
i = n + 1
Loop
End Sub
ご回答いただきどうもありがとうございました。
No.4
- 回答日時:
こんにちは
3つ目以上の場合はわかりませんが、2つ目なら後ろから数える
方法があるようです。
moji = "This is sample text for sample."
m = InStrRev(moji, "sample") '←こいつです。後ろから検索
n = InStr(moji, "sample")
MsgBox (Str(m))
MsgBox (Str(n))
とりあえず、ご参考まで^^;
No.3
- 回答日時:
#1、#2です。
たびたびすみません。#2は無かったことにしてください。
#1の誤)n2 = InStr(n , moji, "sample")
#2の誤)n2 = InStr(n + Len("sample"), moji, "sample")
正)n2 = InStr(n + 1, moji, "sample")
No.2
- 回答日時:
#1です。
失礼しました。以下のとおり訂正。誤)n2 = InStr(n , moji, "sample")
正)n2 = InStr(n + Len("sample"), moji, "sample")
No.1
- 回答日時:
InStrは、開始位置の指定ができます。
省略でき、初期値は1なので気が付きにくい。moji = "This is sample text for sample."
n = InStr(moji, "sample")
n2 = InStr(n, moji, "sample")
でも、Splitで分割件数を数える方が楽ですよ。
dim strArrey() as string
dim nArrey as long
moji = "This is sample text for sample."
strArrey() = split(moji, "sample")
'ここでは以下のとおりに分割されている
'strArrey(0)="This is "
'strArrey(1)=" text for "
'strArrey(2)="."
nArrey=UBound(strArrey())
'nArreyは分割されている件数を拾えるので2となる(ZeroOriginです)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Windows 10 bash の -z オプションがうまく動作しない原因を教えて下さい。 4 2023/03/22 18:04
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- 英語 L-PRF can be obtained by manual or automated metho 1 2022/04/08 09:39
- Excel(エクセル) Excel 複数列のある文字を優先して1列に表示したいです 2 2022/12/03 12:07
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- UNIX・Linux bashの変数でブランクがあるかチェックする方法教えて下さい。 3 2023/04/06 16:09
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) Excel VBAで教えてください 4 2022/05/11 22:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスかラベル上の...
-
ユーザーフォームへのデータ入...
-
エクセルVBAでテキストボッ...
-
Matlabでsin波を使って矩形波を...
-
VBA public変数はどのようなこ...
-
二点の座標から距離や角度を求...
-
String型の値にスラッシュをつ...
-
【VB6.0】 あるフォームから他...
-
C#のループでtextboxに値を入れ...
-
アクセスできない保護レベルエ...
-
2次元配列のデータをファイルへ...
-
VB.NETでのイベントの途中終了
-
Fillの使い方について
-
ループを使ってテキストボック...
-
SavePictureで保存できない
-
xmlの値を配列変数に格納し...
-
他のフォームから別のフォーム...
-
時間の計算
-
Access ○or△文の書き方
-
【VB.NET】テキストボックスに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスかラベル上の...
-
ExcelのVBAで文章にある複数の...
-
vba 日本語以外を抽出について
-
助けてください!
-
Visual Basicについてお聞きし...
-
VB2010 シリアル通信の文字列...
-
cshスクリプト内での”ヒアドキ...
-
VB.NET コンボボックスからのit...
-
XMLファイルのattribute値がう...
-
アクセスのフィールドに値をペ...
-
ボールの動きがスムーズに動い...
-
[VB6] SQLの作成について
-
VB6.0 sp5]テキストボックスと...
-
C++言語、国際符号翻訳プログラ...
-
vc++のAPI(dll)の引数をVBAでう...
-
【VBS】クリップボード操作につ...
-
LOTUS-123のユーザーフォームに...
-
Docmd.Openreportで範囲印刷を...
-
円頓章を現代語訳して下さい。
-
VBScript、ClipboardDataオブジ...
おすすめ情報