- 締切済み
セル内の条件にあった文字の抽出
お願い致します。 セル内に【あいうえお123】 とあり、その中から【123】のみを別のセルに新しく抽出したいのですが、どのようにすれば良いでしょうか? どうぞ宜しくお願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。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を通しているので、計算スピードが遅いことです。最近、もっと技術力をアップしなければならないことを痛感しています。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 #3さんのご指摘のとおりです。ちょっとご質問がはっきりしませんね。タイトルの「条件」って何ですか?数字だけを抜き出したいとかいうものではありませんか? ただ、その数字と文字の組み合わせも、#4さんのようなご指摘の場合もあります。もう少し、条件をはっきりさせてください。もう、既に出ているご回答で満足なら、どうか無視してくださって結構です。私は、もっとも複雑な例の場合を考えていますから。 例: 「あいう123えお456かきく789けこ10」 という場合の全角半角混じりの数字だけを抜き出す方法 ただし、ユーザー定義関数です。
お礼
いえいえ、とんでもない。 とても勉強になります。 ありがとうございます。
補足
ちょっと、お礼の書き方がおかしかったので、ここでお伝えします。 >「あいう123えお456かきく789けこ10」 という場合の全角半角混じりの数字だけを抜き出す方法 を、また手が空いた時にでも教えて下さい。 ありがとうございます!!
- zenjee
- ベストアンサー率47% (50/106)
>【123】のみを別のセルに新しく抽出したい 設問では【あいうえお123】以外にデータがないような記述がされているので、愚直にそのとおり理解してその中から「123」だけを取り出す答を書きます。【あいうえお123】が入力されているセルが仮に「A1」だとすると、例えばB1に =RIGHT(A1,3) と入力します。 蛇足ですがあいうえお123】以外に例えばA2以下に【かきくけこ123】などがある場合でも答は同じです。 しかし【さしすせ1234】や【たちつ123てと】などがある場合は答は違います。 =MID(A2,SEARCH(1,A2,1),3) となります。 ご質問以外の余計な答ですが……。
お礼
余計だなんて、とんでもない・・ ありがとうございます!! 参考にさせて頂きます。
- imogasi
- ベストアンサー率27% (4737/17069)
この質問おかしくありません。 見つかったら、抽出されてセットされるのは「123」ばかりですが、良いですか。123を除いたものの方が面白そう。 (例) asd123 123 xxxx sdf123 123 123asdf 123 A列に元データがある。 B1に =IF(ISERROR(FIND("123",A1)),"","123") と入れて下方向に複写する。 私の勘違い?
お礼
むむ・・・質問内容が伝わらなかったかも知れません・・・。しかし、良い勉強になりました。 ありがとうございます。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
=RIGHT(A1,LENB(A1)-LENB(ASC(A1))) とかでどうでしょう
お礼
なるほど、ありがとうございます。。
- shiotan99
- ベストアンサー率68% (140/203)
こんにちは~ すべて<文字列+数字>というパターンなのでしょうか? そうだとすれば、"あいうえお123" が A1だとして、 =LOOKUP(10^17,RIGHT(A1,COLUMN(1:1))*1) としてみてください。 10^17 は、10の17乗です。^ は、ひらがなの「へ」のキーで出ます。
お礼
ありがとうございました。参考にしてみます。。
お礼
丁寧に答えて頂いてありがとうございました。 私はWendy02さんより、もっともっと技術も理解力も知識もなくお恥ずかしい所存です。。。 今後もよろしくお願い致します。