プロが教える店舗&オフィスのセキュリティ対策術

  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 です。

よろしくお願いします。

A 回答 (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  
    • good
    • 0
この回答へのお礼

大変分かりやすかったです。
おかげさまで上手く行きました。

お礼日時:2011/01/25 19:04

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
    • good
    • 0
この回答へのお礼

VBAまで組んで頂きまして、本当にありがとうございました。
今回は上手く行きました。

お礼日時:2011/01/25 19:05

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))
    • good
    • 0
この回答へのお礼

いろいろな式が作れるのですね。
ありがとうございました。

お礼日時:2011/01/25 19:00

以下の様な式でよろしかと思います。



=MID(A1,FIND("【",A1),FIND("】",A1)-FIND("【",A1)+1)&LEFT(A1,FIND("》",A1))&RIGHT(A1,LEN(A1)-FIND("】",A1))
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変上手く行きました。

お礼日時:2011/01/25 18:59

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