- ベストアンサー
【Excel】 文字の前後を入れ替えたい
A B 1 《ABC》【あいう】ABCDE 【あいう】《ABC》ABCDE 2 《EFG》【えおかき】FGHI 【えおかき】《EFG》FGHI 3 《HIJK》【くけ】JKLMNO 【くけ】《HIJK》JKLMNO 4 《LM》【こさし】PQRS 【こさし】《LM》PQRS 5 《NOP》【すせ】TUVW 【すせ】《NOP》TUVW A列の文字列で 《***》と【***】を入れ替えて B列のようにするB列の式を教えて下さい。 9千行以上あります。 Excel 2007 です。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
2つに分けて考える 【あいう】の部分抜き出し =MID(A1,FIND("【",A1),FIND("】",A1)-FIND("【",A1)+1) ーー 【あいう】を抹消 =SUBSTITUTE(A1,MID(A1,FIND("【",A1),FIND("】",A1)-FIND("【",A1)+1),"") 両者を&で結合 =MID(A1,FIND("【",A1),FIND("】",A1)-FIND("【",A1)+1)&SUBSTITUTE(A1,MID(A1,FIND("【",A1),FIND("】",A1)-FIND ("【",A1)+1),"") ーーー 例データ 《ABC》【あいう】ABCDE 《EFG》【えおかき】FGHI 結果 【あいう】《ABC》ABCDE 【えおかき】《EFG》FGHI
その他の回答 (3)
- mt2008
- ベストアンサー率52% (885/1701)
9000行以上もあるならVBAの方が良さそう。 #以下のコードはExcel2003で確認 Sub Sample() Dim oRegExp As Object Dim oRepA As Object Dim oRepB As Object Dim sRepA, sRepB, sTarget Dim nLast, nRow Set oRegExp = CreateObject("VBScript.RegExp") Application.ScreenUpdating = False With oRegExp nLast = Range("A1").End(xlDown).Row For nRow = 1 To nLast sTarget = Range("A" & nRow).Text '《…》の中を取り出す .Pattern = "《.*》" Set oRepA = .Execute(sTarget) '【…】の中を取り出す .Pattern = "【.*】" Set oRepB = .Execute(sTarget) '《…》【…】が一個づつある場合のみ処理 If oRepA.Count = 1 And oRepB.Count = 1 Then '《…》の中を置換 sRepB = Mid(oRepB(0), 2, Len(oRepB(0)) - 2) .Pattern = "《.*》" sTarget = .Replace(sTarget, "《" & sRepB & "》") '【…】の中を置換 sRepA = Mid(oRepA(0), 2, Len(oRepA(0)) - 2) .Pattern = "【.*】" sTarget = .Replace(sTarget, "【" & sRepA & "】") '置換したものをB列に Range("B" & nRow).Value = sTarget End If Set oRepA = Nothing Set oRepB = Nothing Next nRow End With Set oRegExp = Nothing Application.ScreenUpdating = True End Sub
お礼
VBAまで組んで頂きまして、本当にありがとうございました。 今回は上手く行きました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
B1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(ISERROR(FIND("【",A1)),ISERROR(FIND("《",A1))),"",MID(A1,FIND("【",A1),FIND("】",A1)-FIND("【",A1)+1)&LEFT(A1,FIND("》",A1))&MID(A1,FIND("】",A1)+1,20))
お礼
いろいろな式が作れるのですね。 ありがとうございました。
- kybo
- ベストアンサー率53% (349/647)
以下の様な式でよろしかと思います。 =MID(A1,FIND("【",A1),FIND("】",A1)-FIND("【",A1)+1)&LEFT(A1,FIND("》",A1))&RIGHT(A1,LEN(A1)-FIND("】",A1))
お礼
ありがとうございました。 大変上手く行きました。
お礼
大変分かりやすかったです。 おかげさまで上手く行きました。