• ベストアンサー

エクセルのセルの中の任意の文字を別のセルに移動

エクセルのセルの文字列の中の、(1)~(12)の文字だけ、一つ左のセルに抜き出す数式やマクロはありませんか? 具体的には、「NTTドコモ (1)月分電話料」のように、大体「月分」という文字の前に(1)~(12)の文字がある状況ですが、全てが同じような形式で入力されているわけではなく、「(2)月分新聞代」のように、先頭から始まっているようなものもあります。移動後は、「NTTドコモ 月分電話料」になり、抜き出した文字列を一つ左のセルに持っていきたいというものです。

質問者が選んだベストアンサー

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.5

=MID(A1,FIND("(",A1),FIND(")",A1)-FIND("(",A1)+1)

その他の回答 (5)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.6

添付のように過酷(イジワル)な文字列があるのなら VBAで泥臭く書かないと実現できないだろうと思います。 A1=MyPicup2(C1) B1=MyPicup1(C1) Option Explicit Function MyPicup1(inRange As Range) As String  Dim wkCnt1 As Long  Dim wkTexti As String  Dim wkTextk As String  Dim KeyText As String  Dim RowCnt As Long    With ThisWorkbook.Sheets(1)   wkTexti = inRange.Text   For wkCnt1 = 1 To 12    KeyText = "(" & Format(wkCnt1, "0") & ")"    Do     If InStr(wkTexti, KeyText) = 0 Then Exit Do     wkTexti = Replace(wkTexti, KeyText, "")    Loop   Next wkCnt1  End With  MyPicup1 = wkTexti End Function Function MyPicup2(inRange As Range) As String  Dim wkCnt1 As Long  Dim wkTexti As String  Dim wkTextk As String  Dim KeyText As String  Dim RowCnt As Long    With ThisWorkbook.Sheets(1)   wkTexti = inRange.Text   For wkCnt1 = 1 To 12    KeyText = "(" & Format(wkCnt1, "0") & ")"    Do     If InStr(wkTexti, KeyText) = 0 Then Exit Do     MyPicup2 = MyPicup2 & KeyText     wkTexti = Replace(wkTexti, KeyText, "")    Loop   Next wkCnt1  End With End Function

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

ユーザー定義関数で、その1セルの中の「半角の括弧内の文字列を削除」する、でよければ 例データ A1 aaaa(bbbb)ccc A2 vvg(bgh)mma A3 NTTドコモ (1)月分電話料 標準モジュールに Function aaa(a As Range) p1 = InStr(a, "(") 'MsgBox p1 p2 = InStr(a, ")") 'MsgBox p2 aaa = Replace(a, Mid(a, p1, p2 - p1 + 1), "") End Function 結果 aaaaccc vvgmma NTTドコモ 月分電話料 ーーー 使い方は 結果を出すセルに =aaa(A1) と、式を入れて下方向に式を複写する。普通の関数の使い方と類似。 ーー aaaという関数の名前は手抜きだが、適当な名前に変えることができる。 ワンペアだけの()の中と()を抹消するもの。 1セルの文字列の中の、複数の()内を抹消するのはコードの修正が必要。

回答No.3

タブ区切りのテキストファイルで保存し直してテキストファイルを展開する時に 各文字をセル分けして展開することは出来るけど マクロや関数がいいのかな??

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

カッコは必ず半角って事で良いですか? 関数でやりますので、元のセルの値は変化しません。 添付の図では以下の式を入れています。 B1:=SUBSTITUTE(A1,"("&C1&")","") C1:=TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,")","("),"(",REPT(" ",100)),100,100))

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

(,),0,1,2,...9の各数字と括弧をブランクに置き換える式(SUBSTITUTE関数)ではいかがでしょう。

関連するQ&A