[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 文字を含む摘要列から5桁の数字を抽出』(どう)
摘要列に文字を含む5桁の数字が不規則に入力されているデータがあります。
最終列に数字5桁のみ抽出するにはどうしたらいいでしょうか。
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
文字列中に現れる、最初の連続した数字を既に存在するレイアウトの最終列に記載します。 (関数でもできると思いますが) 5桁という縛りはいれていません。(もちろん入れることはできますが)
なお、1行目がタイトル行、データは2行目からという前提です。
Sub Sample1()
Const RMKCOL As String = "B" '適用列記号 実際のものに Dim re As Object Dim col As Long Dim c As Range
Set re = CreateObject("VBScript.RegExp") re.Pattern = "\d+" col = ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Count).Column '使用領域の最後の列 Columns(col).Resize(Rows.Count - 1).Offset(1).ClearContents
For Each c In Range(RMKCOL & 2, Range(RMKCOL & Rows.Count).End(xlUp)) If re.test(c.Value) Then c.EntireRow.Columns(col).Value = CLng(re.Execute(c.Value)(0)) Next
End Sub
(β) 2016/01/20(水) 13:06
Sub test() Const RMKCOL As String = "B" Dim i As Long Dim j As Long Dim cw1 As String Dim cw2 As String
For i = 1 To Cells(Rows.Count, RMKCOL).End(xlUp).Row cw1 = StrConv(Cells(i, RMKCOL).Value, vbNarrow) For j = 1 To Len(cw1) - 4 cw2 = Mid(cw1, j, 5) If cw2 Like "#####" Then Cells(i, RMKCOL).Offset(0, 4).Value = cw2 Exit For End If Next j Next i End Sub (???) 2016/01/20(水) 14:20
UDF
セルに =GetNum(A1,5) 等として使用
Function GetNum(txt As String, myNum As Long) With CreateObject("VBScript.RegExp") .Pattern = "\d{" & myNum & "}" GetNum = .Execute(txt)(0) End With End Function (seiya) 2016/01/20(水) 14:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.