• 締切済み

セル内の条件にあった文字の抽出

お願い致します。 セル内に【あいうえお123】 とあり、その中から【123】のみを別のセルに新しく抽出したいのですが、どのようにすれば良いでしょうか? どうぞ宜しくお願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。Wendy02です。 >という場合の全角半角混じりの数字だけを抜き出す方法 「参考にします」だけですと、一体、どれが本当にご質問に対する回答かわかりませんが、まあ、参考は、参考だから、これが正解でなくてもよいとは思いますし、これも参考にしてください。(^^; 取り付け方: Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。 後は、一般の関数と同じような扱いです。ただし、IEの5.5以上が必要だったと思います。 =PICKUPFIG(A1) とすると、 あいう123えお456かきく789けこ10  ↓ 12345678910 となります。 =PICKUPFIG(A1,True) とすると、 あいうえおかきくけこ となります。 (どこでも、いつでも、一般の関数といっしょのように使いたい、ということになると、少し難しい作業が必要です。)  '<標準モジュール> '-------------------------------------------- Function PickupFig(範囲 As Range, Optional オプション As Boolean = False) As String   '文字列混在の中から、数字を抜き出す関数   Dim Re As Object   Dim rng As Range   Dim Matches As Object   Dim Match As Object   Dim myValue As String   Dim myValues As String   Set Re = CreateObject("VBScript.RegExp")   Set rng = 範囲   Application.Volatile   If オプション = False Then    myPattern = "([\d0-9]+)"   Else    myPattern = "([^\d0-9]+)"   End If   With Re    .Global = True    .Pattern = myPattern    For Each c In rng      If Not IsError(c) Then      Set Matches = .Execute(c.Value)      For Each Match In Matches       myValue = myValue & .Replace(Match, "$1")      Next     End If     myValues = myValues & myValue    Next c   End With   Set Re = Nothing   PickupFig = myValues End Function p.s. 今の私のレベルは、この程度しかありません。問題点は、VBAを通しているので、計算スピードが遅いことです。最近、もっと技術力をアップしなければならないことを痛感しています。

peroperopero
質問者

お礼

丁寧に答えて頂いてありがとうございました。 私はWendy02さんより、もっともっと技術も理解力も知識もなくお恥ずかしい所存です。。。 今後もよろしくお願い致します。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 #3さんのご指摘のとおりです。ちょっとご質問がはっきりしませんね。タイトルの「条件」って何ですか?数字だけを抜き出したいとかいうものではありませんか? ただ、その数字と文字の組み合わせも、#4さんのようなご指摘の場合もあります。もう少し、条件をはっきりさせてください。もう、既に出ているご回答で満足なら、どうか無視してくださって結構です。私は、もっとも複雑な例の場合を考えていますから。 例: 「あいう123えお456かきく789けこ10」 という場合の全角半角混じりの数字だけを抜き出す方法 ただし、ユーザー定義関数です。

peroperopero
質問者

お礼

いえいえ、とんでもない。 とても勉強になります。 ありがとうございます。

peroperopero
質問者

補足

ちょっと、お礼の書き方がおかしかったので、ここでお伝えします。 >「あいう123えお456かきく789けこ10」 という場合の全角半角混じりの数字だけを抜き出す方法 を、また手が空いた時にでも教えて下さい。 ありがとうございます!!

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.4

>【123】のみを別のセルに新しく抽出したい 設問では【あいうえお123】以外にデータがないような記述がされているので、愚直にそのとおり理解してその中から「123」だけを取り出す答を書きます。【あいうえお123】が入力されているセルが仮に「A1」だとすると、例えばB1に =RIGHT(A1,3) と入力します。 蛇足ですがあいうえお123】以外に例えばA2以下に【かきくけこ123】などがある場合でも答は同じです。 しかし【さしすせ1234】や【たちつ123てと】などがある場合は答は違います。 =MID(A2,SEARCH(1,A2,1),3) となります。 ご質問以外の余計な答ですが……。

peroperopero
質問者

お礼

余計だなんて、とんでもない・・ ありがとうございます!! 参考にさせて頂きます。

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

この質問おかしくありません。 見つかったら、抽出されてセットされるのは「123」ばかりですが、良いですか。123を除いたものの方が面白そう。 (例) asd123 123 xxxx sdf123 123 123asdf 123 A列に元データがある。 B1に =IF(ISERROR(FIND("123",A1)),"","123") と入れて下方向に複写する。 私の勘違い?

peroperopero
質問者

お礼

むむ・・・質問内容が伝わらなかったかも知れません・・・。しかし、良い勉強になりました。 ありがとうございます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

=RIGHT(A1,LENB(A1)-LENB(ASC(A1))) とかでどうでしょう

peroperopero
質問者

お礼

なるほど、ありがとうございます。。

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ すべて<文字列+数字>というパターンなのでしょうか? そうだとすれば、"あいうえお123" が A1だとして、 =LOOKUP(10^17,RIGHT(A1,COLUMN(1:1))*1) としてみてください。 10^17 は、10の17乗です。^ は、ひらがなの「へ」のキーで出ます。

peroperopero
質問者

お礼

ありがとうございました。参考にしてみます。。

専門家に質問してみよう