Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4257 / 13646 ツリー ←次へ | 前へ→

【57636】文字列の切り分け方法 Cbf 08/9/6(土) 12:02 質問[未読]
【57637】Re:文字列の切り分け方法 kanabun 08/9/6(土) 12:22 発言[未読]
【57657】Re:文字列の切り分け方法 Cbf 08/9/7(日) 19:06 質問[未読]
【57658】Re:文字列の切り分け方法 kanabun 08/9/7(日) 19:15 発言[未読]
【57659】Re:文字列の切り分け方法 Cbf 08/9/7(日) 19:21 質問[未読]
【57660】Re:文字列の切り分け方法 かみちゃん 08/9/7(日) 19:29 発言[未読]
【57662】Re:文字列の切り分け方法 Cbf 08/9/7(日) 20:25 お礼[未読]
【57661】Re:文字列の切り分け方法 kanabun 08/9/7(日) 19:34 発言[未読]
【57663】Re:文字列の切り分け方法 Cbf 08/9/7(日) 20:29 お礼[未読]

【57636】文字列の切り分け方法
質問  Cbf E-MAIL  - 08/9/6(土) 12:02 -

引用なし
パスワード
   ある文字列から文字数を切り取りたいですが、その方法は分かりませんので、
ご指導ください。

文字列の長さは不定長、
例えば
SDF「ABC」DFFH ==>ABC 取りたい文字は「」で囲んでいる
T「FGHK」     ==>FGHK 取りたい文字は「」で囲んでいる

【57637】Re:文字列の切り分け方法
発言  kanabun  - 08/9/6(土) 12:22 -

引用なし
パスワード
   ▼Cbf さん:

>例えば
>SDF「ABC」DFFH ==>ABC 取りたい文字は「」で囲んでいる
>T「FGHK」     ==>FGHK 取りたい文字は「」で囲んでいる

一例ですが、
まず、InStr関数を使って文字列の中の "「" のある位置を調べる → n桁目
次に、InStr関数を使って "「"の後ろの "」" のある位置を調べる → m桁目
Mid$関数を使って、n桁目+1 〜 m桁目-1 を取り出す

Split関数を2回使って "「" の後ろ と "」" の前で切り出す方法もあります。

【57657】Re:文字列の切り分け方法
質問  Cbf  - 08/9/7(日) 19:06 -

引用なし
パスワード
   ありがとうございます。

A1のセルに引用文は「Abcdefs」です。
B1ぼセルに計算式=MID(A1,InStr(A1,"「")+1,InStr(A1,"」")-InStr(A1,"「")+1)
エラーがでてしまいます、

  A            B
1 引用文は「Abcdefs」です。 =MID(A1,InStr(A1,"「")+1,InStr(A1,"」")-InStr               (A1,"「")+1)


>一例ですが、
>まず、InStr関数を使って文字列の中の "「" のある位置を調べる → n桁目
>次に、InStr関数を使って "「"の後ろの "」" のある位置を調べる → m桁目
>Mid$関数を使って、n桁目+1 〜 m桁目-1 を取り出す
>
>Split関数を2回使って "「" の後ろ と "」" の前で切り出す方法もあります。

【57658】Re:文字列の切り分け方法
発言  kanabun  - 08/9/7(日) 19:15 -

引用なし
パスワード
   ▼Cbf さん:
こんにちは

>A1のセルに引用文は「Abcdefs」です。
>B1ぼセルに計算式=MID(A1,InStr(A1,"「")+1,InStr(A1,"」")-InStr(A1,"「")+1)
>エラーがでてしまいます、

InStr関数や Mid$関数や Split関数は VBA の関数です。
ワークシート関数なら
FIND と MIDを組み合わせるのでしょうか?

【57659】Re:文字列の切り分け方法
質問  Cbf  - 08/9/7(日) 19:21 -

引用なし
パスワード
   >InStr関数や Mid$関数や Split関数は VBA の関数です。
VBA の関数って、どんなような関数なのか、まだわかりませんので、
見本をいただませんか?

【57660】Re:文字列の切り分け方法
発言  かみちゃん  - 08/9/7(日) 19:29 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>>InStr関数や Mid$関数や Split関数は VBA の関数です。
>VBA の関数って、どんなような関数なのか、まだわかりませんので、
>見本をいただませんか?

VBAの掲示板に一般関数のご質問でしょうか?
一応、一般関数でするとすれば、以下のような感じです。
=MID(A1,FIND("「",A1)+1,FIND("」",A1)-(FIND("「",A1)+1))

方法はいろいろあると思います。
FIND("「",A1)

FIND("」",A1)
で何が返るかを確認して、MID関数と組み合わせてください。

【57661】Re:文字列の切り分け方法
発言  kanabun  - 08/9/7(日) 19:34 -

引用なし
パスワード
   ▼Cbf さん:
>>InStr関数や Mid$関数や Split関数は VBA の関数です。
>VBA の関数って、どんなような関数なのか、まだわかりませんので、
>見本をいただませんか?

Sub Test1()
 Dim ss As String: ss = "SDF「ABC」DFFH"
 Dim n As String, m As String
 n = InStr(ss, "「")
 m = InStr(n + 1, ss, "」")
 If m Then
   MsgBox Mid$(ss, n + 1, m - n - 1)
 Else
   MsgBox "文字列が見つかりません"
 End If
End Sub

というようなことです。

以下のようなユーザー定義関数を作っておいて、

  [B1] =Between(A1, "(", ")")

と数式をセットしておいてもいいですけど。

'z1とz2にはさまれた文字を取得
Function Between(ss$, z1$, z2$) As String
 Dim n&, m&
 n = InStr(ss, z1)
 m = InStr(n + 1, ss, z2)
 If m Then
  Between = Mid$(ss, n + 1, m - n - 1)
 Else
  Between = ""
 End If
End Function

【57662】Re:文字列の切り分け方法
お礼  Cbf  - 08/9/7(日) 20:25 -

引用なし
パスワード
   かみちゃんさんへ

 ヒントをいただき、ありがとうございました。
 ワークシートの関数Find(文字列,検索文字)使い方が分かりました。
Find関数の役割は該当文字の文字数を返してくれますので、その返値を
使えば、文字列から切り分けることができます。

【57663】Re:文字列の切り分け方法
お礼  Cbf  - 08/9/7(日) 20:29 -

引用なし
パスワード
   kanabunさん

 貴重なコードをいただき、本当にありがとうございました。いままで、自作関数のことはまったく知りませんでした。
 あした、このコードを参考しながら、自作関数を作ってみたいですので、また
よろしくお願いいたします。

4257 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free