[[20150805162238]] 『複数のセルから数字だけを抜き出す関数』(ナッパの君) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数のセルから数字だけを抜き出す関数』(ナッパの君)

複数のセルから数字だけを抜き出す関数

例えば
B7からJ7に入力された文字のなかから数字のみをK7に表示させる

B7…1
C7…無し
D7…6
E7…無し
F7…有り1
G7…無し
H7…3
I7…途中45
J7…無し

K7 161345

このようし表示したいのですが可能でしょうか?

< 使用 Excel:Excel2013、使用 OS:Windows7 >


ユーザー定義関数を使う例。標準モジュールに以下を貼り付ける。
あとは、K7セルの数式は「=fCon(B7:J7)」にする。

 Function fCon(R As Range) As String
    Dim cw As String
    Dim i As Long

    For i = 1 To R.Count
        cw = cw & R(i).Text
    Next

    fCon = ""
    For i = 1 To Len(cw)
        If Mid(cw, i, 1) Like "[0-9]" Then
            fCon = fCon & Mid(cw, i, 1)
        End If
    Next i
 End Function
(???) 2015/08/05(水) 17:05

 UDF別案です。

 K7 : =ExtractNum(B7:J7)

 (???)さんのと比べて手抜きで、1行しかサポートしませんが。

 Function ExtractNum(r As Range) As String
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "[^\d]"
        ExtractNum = .Replace(Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(r.Rows(1))), ""), "")
    End With
 End Function

(β) 2015/08/05(水) 18:12


 手抜きをやめ、指定された領域をすべて対象にしました。

 セル側は =ExtractNum(B7:J10) とか =ExtractNum(B7:B20) 等。

 Function ExtractNum(r As Range) As String
    Dim w As Variant
    Dim c As Range
    Dim x As Long

    ReDim w(1 To r.Count)
    For Each c In r.Cells
        x = x + 1
        w(x) = c.Value
    Next

    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "[^\d]"
        ExtractNum = .Replace(Join(w, ""), "")
    End With

 End Function

(β) 2015/08/05(水) 20:27


こんにちは

数字
数字以外
数字以外+数字

というパターン(数字+数字以外という並びが無い)とすると、

=IFERROR(LOOKUP(10^17,RIGHT(B7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(C7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(D7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(E7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(F7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(G7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(H7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(I7,COLUMN($1:$1))*1),"")&IFERROR(LOOKUP(10^17,RIGHT(J7,COLUMN($1:$1))*1),"")

でどうでしょうか?

きっと関数マスターの方々ならもっと短く出来ると思います。

(ウッシ) 2015/08/06(木) 08:23


皆さま丁寧にありがとうございました
初めての書き込みでしたが、こんなに親切な方々が居たことに
とても感謝しております

本当にありがとうございました
(ナッパの君) 2015/08/06(木) 15:45


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.