
下記のような記述だと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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LibreOffice Clalc(またはエク...
-
【マクロ】excelファイルを開く...
-
【関数】3つのセルの中で最新...
-
【マクロ】数式を入力したい。...
-
Office2021のエクセルで米国株...
-
エクセルのリストについて
-
【マクロ】【相談】Excelブック...
-
【マクロ】元データと同じお客...
-
【画像あり】オートフィルター...
-
エクセルの関数について
-
【マクロ】左のブックと右のブ...
-
他のシートの検索
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ画像あり】❶1つの条件...
-
エクセルの複雑なシフト表から...
-
【マクロ】変数に入れるコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスかラベル上の...
-
ExcelのVBAで文章にある複数の...
-
RichTextBoxで指定行の色を自動...
-
vba 日本語以外を抽出について
-
DTPicker テキストクリアの方法
-
VBAのループ
-
助けてください!
-
XMLファイルのattribute値がう...
-
アクセスのフィールドに値をペ...
-
画面の繰り返し機能について
-
VB6→VS2005アップグレード後
-
WORd VBA 文章を単語に分解する
-
文字列を配列に…。
-
cshスクリプト内での”ヒアドキ...
-
VC++のプログラミングについて
-
EXCEL VBA UserForm のご質問
-
VBAでフィールドを配列読み
-
[VB6] SQLの作成について
-
Can you text me your business...
-
perlにおける正規表現で、パタ...
おすすめ情報