0

列Bに電話番号(約50kレコード)のデータベースがあり、「07」で始まるすべての番号を同じ行の列Cに抽出したいと思います。私はこれを持っています。

          A                B
1    0113 1210012
2    07878 121213
3    01423 568741
4    07584 123123
5    0033 123456789
6    07548 1234567

そして私はこれを作成する方法が必要です

          A                  B
1    0113 1210012
2                       07878 121213
3    01423 568741
4                       07584 123123
5    0033 123456789
6                       07548 1234567
4

2 に答える 2

0

これは仕事をする必要があります

Sub Filter07()

Dim MyRange As Range, MyCell As Range

Set MyRange = Range([B1], Cells(Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row, 2))

For Each MyCell In MyRange

    If Left(Trim(Format(MyCell.Value, "@")), 2) = "07" Then

        MyCell(1, 2) = Trim(Format(MyCell.Value, "@"))
        MyCell = ""

    End If

Next MyCell

End Sub
于 2013-01-11T09:47:24.010 に答える
0

これがあなたが試すためのVBAコードです:私はregexandarraylistオブジェクトを使用しました。rangeワークシートとコード間のトラフィックを最小限に抑えるためにループするよりも、コードオブジェクトをループする方が高速です。さらに、重複または一意のみを出力するかどうかわからない。だから私は単に辞書に対してArrayListを選択します。また、ArrayListを使用すると、位置を正しく保つことができます;)

Option Explicit

Sub StartingWith07()
Dim vArray As Variant
Dim dc As Object
Dim objRegex As Object
Dim i As Integer
Dim arrList As Object

Set arrList = CreateObject("System.Collections.ArrayList")
Set objRegex = CreateObject("VBScript.RegExp")
objRegex.IgnoreCase = True
objRegex.Global = True
objRegex.Pattern = "^(07)"

'-- you can also use dynamic last row to set the range from A2
vArray = WorksheetFunction.Transpose(Sheets(1).Range("A2:A10").Value)

    For i = LBound(vArray) To UBound(vArray)
        If objRegex.Test(Trim(vArray(i))) Then
            arrList.Add vArray(i)
        Else
            arrList.Add ""
        End If
    Next i

    '--output to sheet
    Sheets(1).Range("B2").Resize(arrList.Count) = _ 
    Application.Transpose(arrList.toarray())

End Sub

出力:

ここに画像の説明を入力してください

于 2013-01-11T09:59:53.687 に答える