プロが教えるわが家の防犯対策術!

こんにちは!

エクセルの文字の抜き出しについて教えて頂けませんか!


1セル内に数箇所抜き出したい文字があります。

抜き出したい文字は A列にあり【◎◎◎】 と すみつき括弧に囲まれているんですが、
それをB列 、C列、D列に抜き出したいと思います。

詳しい方、よろしくお願いします!!

「エクセル 特定の文字の間を抜き出し」の質問画像

A 回答 (4件)

セルB3の式



="【"&TRIM(MID(SUBSTITUTE(SUBSTITUTE($A3,"【",REPT(" ",LEN($A3))),"】",REPT(" ",LEN($A3))),LEN($A3)*((COLUMN(B:B)-1)*2-1),LEN($A3)))&"】"

後は横にコピーしてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

一発解決、とても気持ちが良い回答でした。


感謝いたします、ありがとうございました!

お礼日時:2014/07/02 20:55

>抜き出したい文字は A列にあり【◎◎◎】 と すみつき括弧に囲まれているんですが、それをB列 、C列、D列に抜き出したいと思います。


A列の文字列にある"【"と"】"の位置を左から順次検出してA列の文字列からMID関数で切り出せば良いでしょう。
1番目の"【"は次の数式で検出できます。
=FIND("|",SUBSTITUTE($A3,"【","|",COLUMN(A3)))
文字の置き換え(SUBSTITUTE関数)で"|"を他の任意の文字に変えても良いのですがA列の文字列に含まれない文字としてください。
1番目の"】"は同様に次の数式で良いでしょう。
=FIND("|",SUBSTITUTE($A3,"】","|",COLUMN(A3)))
A列の文字列から【】に囲まれた文字列(【】を含む)を切り出すには次の数式が分かり易いでしょう。
=IFERROR(MID($A3,FIND("|",SUBSTITUTE($A3,"【","|",COLUMN(A3))),FIND("|",SUBSTITUTE($A3,"】","|",COLUMN(A3)))-FIND("|",SUBSTITUTE($A3,"【","|",COLUMN(A3)))+1),"")
FIND関数でエラーが発生する場合はIFERROR関数で空欄("")とするようにしてあります。
IFERROR関数はEXCEL 2007以降のバージョンから組み込まれています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

うーん、関数って難解ですね、勉強します!

ありがとうございます!

お礼日時:2014/07/02 20:57

こんばんは!


VBAでの一例です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, k As Long, n As Long, cnt As Long, str As String
For i = 3 To Cells(Rows.Count, "A").End(xlUp).Row
cnt = 1
For k = 1 To Len(Cells(i, "A"))
str = Mid(Cells(i, "A"), k, 1)
If str = "【" Then
cnt = cnt + 1
n = k
Do Until Mid(Cells(i, "A"), n, 1) = "】"
n = n + 1
Loop
Cells(i, cnt) = Mid(Cells(i, "A"), k, n - k + 1)
k = n + 1
End If
Next k
Next i
End Sub 'この行まで

※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
    • good
    • 0
この回答へのお礼

マクロでの回答ありがとうござます。

意味は解らないのですが、使わせて頂きます!

お礼日時:2014/07/02 20:56

B3=IF(LEN($A3)-LEN(SUBSTITUTE($A3,"【",""))<COLUMN()-1,"",MID(LEFT($A3,FIND("|",SUBSTITUTE($A3,"】","|",COLUMN()-1))),FIND("|",SUBSTITUTE($A3,"【","|",COLUMN()-1)),100))


で右に必要分コピー


数式の解説
■LEN($A3)-LEN(SUBSTITUTE($A3,"【",""))<COLUMN()-1
A3の文字列にある"【"の数をカウントして必要分(COLUMN()-1)ない時は空白表示

■MID(LEFT($A3,FIND("|",SUBSTITUTE($A3,"】","|",COLUMN()-1))),FIND("|",SUBSTITUTE($A3,"【","|",COLUMN()-1)),100)
COLUMN()-1番目の"】"を"|"に置換してFIND関数で位置を求めて、それ以降の文字列をLEFT関数でカット
COLUMN()-1番目の"【"を"|"に置換してFIND関数で位置を求めて、それ以前の文字列をMID関数でカット
    • good
    • 0
この回答へのお礼

わ、解説まで頂きましてありがとうございます。

解説を見ながら理解したいと思います!

お礼日時:2014/07/02 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!