1421929237 EXCELの関数について質問です。

一つのセルから特定の文字列があったら抽出したい。
※環境は、EXCEL2010でございます。

詳細は、添付画像を参照願います。
2列目:抽出する前のデータ、3列目:抽出した後のデータ
抽出条件は、「BA=」から始まる文字列です。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2015/01/22 21:20:37
  • 終了:2015/01/24 08:42:02

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4504ベストアンサー獲得回数18702015/01/22 23:29:38

ポイント400pt

ユーザ定義関数を作るしかないかな、と思います。

以下のコードを、標準モジュールに定義。

Function extract_string(str, label)
    Dim result() As String
    n = 1
    ar = Split(str, ";")
    For Each s In ar
        If Left(s, 3) = label & "=" Then
            ReDim Preserve result(1 To n)
            result(n) = s
            n = n + 1
        End If
    Next
    extract_string = Join(result, ";")
End Function

3列目には、以下の式を設定。

=extract_string(B1,"BA")

こんな感じになります。
f:id:a-kuma3:20150122232722p:image



追記です。

今回は「;」の一つだけ指定しましたが、「;」&「,」どちらかの場合の時は、
以下のようにすればよろしいでしょうか?

Split 関数は、区切り文字として受け付けるのは一文字だけです。
https://msdn.microsoft.com/ja-jp/library/6x627e5f%28v=vs.90%29.aspx

なので、分割の仕方を別の方法で実装します。

Function extract_string(str, label)
    Dim result() As String
    n = 1
    Set re = CreateObject("VBScript.RegExp")
    re.Pattern = "[^=]+=[^;,]+(;|,|$)"
    re.Global = True
    Set matches = re.Execute(str)
    For Each s In matches
        If Left(s, 3) = label & "=" Then
            ReDim Preserve result(1 To n)
            result(n) = s
            n = n + 1
        End If
    Next
    extract_string = Join(result, "")
End Function

抽出したときには、元の BA=????? の末尾についているものを活かせば良いのですよね?

id:japan-nan

ありがとうございました。希望通りの表になりました。
今回は「;」の一つだけ指定しましたが、「;」&「,」どちらかの場合の時は、
以下のようにすればよろしいでしょうか?
unction extract_string(str, label)
Dim result() As String
n = 1
ar = Split(str, ";" or ",")
For Each s In ar
If Left(s, 3) = label & "=" Then
ReDim Preserve result(1 To n)
result(n) = s
n = n + 1
End If
Next
extract_string = Join(result, ";" or ",")
End Function

2015/01/23 21:03:07
id:a-kuma3

今回は「;」の一つだけ指定しましたが、「;」&「,」どちらかの場合の時は、
以下のようにすればよろしいでしょうか?

回答に追記しました。

2015/01/24 00:38:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません