こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2019-02-06 15:55:08

QNo.9585220

暇なときに回答ください

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

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

投稿日時 - 2019-02-06 17:37:57

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.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

投稿日時 - 2019-02-07 19:55:00

ANo.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セルの文字列の中の、複数の()内を抹消するのはコードの修正が必要。

投稿日時 - 2019-02-06 17:26:04

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

投稿日時 - 2019-02-06 16:55:42

ANo.2

カッコは必ず半角って事で良いですか?
関数でやりますので、元のセルの値は変化しません。

添付の図では以下の式を入れています。
B1:=SUBSTITUTE(A1,"("&C1&")","")
C1:=TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,")","("),"(",REPT(" ",100)),100,100))

投稿日時 - 2019-02-06 16:28:12

ANo.1

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

投稿日時 - 2019-02-06 16:06:49

あなたにオススメの質問