• ベストアンサー

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

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

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

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

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

その他の回答 (5)

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答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/17068)
回答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

  • EXCEL: セルの先頭に任意の文字列を入れる

    Excel2013 Excelのセルに入力された文字列の先頭に、任意の文字列を入れたいのですが、どのような方法があるでしょうか? マクロが必要でしたら記述をお願いします。マクロが不要な方法があれば、なお便利です。 文字列は1~3文字程度で任意なものを入れたいのですが、既存セルの先頭に入れるだけです。ただ適用セルが数千あるため、手作業を避けたいと考えています。

  • excelの「ctrl+home」で任意のセルに移動させる設定は?

    excelの「ctrl+home」の操作で、先頭のセルではない任意のセルに移動させる設定はできますか? または、簡単なショートカットで任意のセルに移動する設定はありますか? (マクロはまったくの素人です…)

  • エクセルのセル内の文字の移動

    いつもお世話になります。 教えてください。 A列に入力されてる文字とB列に入力されてる文字をすべてA列に表示するにはどうすればいいのでしょう。セルの結合ではなく文字の移動が可能でしょうか。200行位を一発で変換したいのですが。よろしくお願いします。   

  • エクセル セル内のスペースで区切られた文字列を下のセルへ貼り付ける

    質問があります。 エクセルのセル内にスペースで区切られた文字列があります。 これをスペースで区切られた文字ごとに下のセルへ移動させたいのですが、 関数または、マクロでできるでしょうか? よろしくおね害します。

  • Excelの「’」とセルの書式設定(文字列)の違い

    こんばんわ。 Excelの文字列表示について、教えてください。 数字を入力する際に、先頭に「'」を入力すると 文字列として入力することが出来ますが、 数字が入っているセルのセルの書式設定から 「文字列」に表示形式を変更することとの 違いはなんなんでしょうか? やり方は違うけれど、結果は同じということでしょうか? 「'」を入力すると、データが文字そのものに変わり、 表示形式を変更すると、見た目だけ(左揃えになるなど) 文字列のように見えるだけで、データは 数字のままということなんでしょうか?? また、文字列として入力された数字を Value関数で数値に変換してしまうのと セルの書式設定で「数値」に変更するというものも 同じように、違いが良く分かりません。。。 もう、頭の中が「??」だらけです。 違いを教えていただけたら・・・と思います。 どうぞよろしくお願いいたします<m(__)m>

  • エクセルで文字列の右から4文字を削除してセルに表示したい

    明けましておめでとうございます。宜しくお願いします。 エクセルの文字表示で、A列(A1~A20)に文字数の違う文字列が20行程入力されています。それを、A列(A1~A20)のセルに入力されてされている文字列から4文字だけ削除して、B列(B1~B20)に表示(入力)したいのですがどうすればいいのでしょうか? 例えば、A列(A1~A20)のセルにそれぞれ「今年は2008年です。etc.」とか「今年は2008年1月3日です。etc.」、、、など文字数の違った文字列が入力されているセルの右から4文字分「etc.」だけ削除してB列(B1~B20)に「今年は2008年です。」とか「今年は2008年1月3日です。」というふうに表示(入力)したいのです。テキストを読んでMID関数で出来るかなと思ったのですが、MID(文字列の、何文字目から、何文字分)というもので、文字列の左から何文字目を先頭に、何文字分を表示ということで、私のやりたい事の逆なのです。いい方法を教えて下さい。

  • EXCELでセルの移動マクロを作りたいのですが…

    EXCELについての質問です。マクロを使ってセルの移動をさせたいと考えています。 まず使うデータ範囲はA1:E11です。A1:E10にはデータが入っています。 ちなみに、A列には名前、B~E列には数字が入っており、A11:E11は合計が表示される設定しており、合計の場所はここに固定させたいのです。 その移動のさせ方ですが、 A1:E1に空欄があるとします。 そのときに、マクロを再生させるとA2:E10のセルに入っているデータ(値のみ)を上に移動させたいのです。 さらに、A3:E3の内容を消して空欄が出来たとします。 その時に同じ操作によってA4:E10のデータを上に移動させたいのです。 前者のマクロを単純に作ると縦に9つ分のセルを移動させるマクロでは、 A11:E11も上に移動させられてしまいます。なので、移動させるセルの一番下が10行目になるようなマクロを作りたいのです。 何がしたいのかといいますと、いらないデータを消した時に空欄をマクロで詰めてしまいたいのです。 乱文で判りづらいかと思いますが、知識のある方教えていただけないでしょうか。 よろしくお願い致します。

  • エクセルのセル移動

    今、エクセルで膨大な量のデータを入力しています。 入力後のセル移動を右に設定して、入力しているのですが、横一列分ののデータを全て入力終わったあと、次の行の先頭に自動的に戻るという機能はないのでしょうか? 今は、一行入力が終わったら、矢印キーの左で地道に次の行の先頭に戻しています。ちょっと時間がかかって面倒です。 何か、よい方法はないでしょうか?

  • セル移動マクロを教えて下さい。

    エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。

  • Excelで、同じ文字を入力する手間を省きたい

    Excel97を使用しています。 C列に「会員番号」を入力するのですが、 5桁の番号の前に、「0」を5つつけたいのです。 いちいち「0」を打たずに、自動的に頭に5つ 「0」が入るようにしたいのですが…。 「セルの書式設定」の「表示形式」→ 「ユーザー定義」で「"00000"#####」とすれば、 一応そのように表示はされるのですが、 数式バーでは「0」は表示されませんよね? (数字なので…) でも、実際のセルに「00000XXXXX」と入力 されているようにしたいのです。 (C列が、他の数式の参照先になっているので) 「表示形式」を「文字列」にしてしまうと、 「0」がなくなってしまいますし…。 関数はあまりよく分からないのですが、 「0」の5つ入った列と、 数字の入った列を「CONCATENATE」でつないで、 後で「形式を選択して貼り付け」→「値」 にすれば一応出来ますが、 もっと手軽にやる方法はないでしょうか? マクロは全然分からないのですが、 そういったものを使わないと無理なのでしょうか?

専門家に質問してみよう