電子書籍の厳選無料作品が豊富!

Excelで何万という電話番号のデータがあったとして、
携帯番号(11桁の番号、090.080.070から主に始まる番号)以外の番号(03番号などの固定電話の番号等)を一気に削除するにはどういった関数を組めば良いのでしょうか?(またはマクロ?)

A 回答 (3件)

こんばんは!



>090.080.070から主に始まる番号)以外の番号(03番号などの固定電話の番号等)を一気に削除・・・

逆の考え方をして、090、080、070から始まるデータのみを別シートに表示する方法はどうでしょうか?
VBAになりますが一例です。

元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行になっていて、2行目以降にデータがあるとします。
そして、電話番号列が不明なので勝手にC列としてみました。

尚、電話番号列は文字列またはハイフン入りの電話番号だとします。
(単に0から始まる番号の羅列だと最初の「0」は表示されなくなるため)

標準モジュールにしてください。

Sub Sample1()
 Dim myDic As Object
 Dim i As Long, j As Long
 Dim lastRow As Long, lastCol As Long
 Dim buf As String, myStr As String
 Dim wS As Worksheet
 Dim myKey, myR, myAry

  Set myDic = CreateObject("Scripting.Dictionary")
  Set wS = Worksheets("Sheet2")
   wS.Cells.ClearContents
    With Worksheets("Sheet1")
     lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
     lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
      wS.Range("A1").Resize(, lastCol).Value = .Range("A1").Resize(, lastCol).Value
      myR = Range(.Cells(2, "A"), .Cells(lastRow, lastCol))
       For i = 1 To UBound(myR, 1)
        buf = Left(myR(i, 3), 3) '//←C列の頭3文字★//
         If buf = "070" Or buf = "080" Or buf = "090" Then
          For j = 1 To UBound(myR, 2)
           myStr = myStr & myR(i, j) & "_"
          Next j
          myStr = Left(myStr, Len(myStr) - 1)
         End If
         If Not myDic.exists(myStr) Then
          myDic.Add myStr, ""
         End If
        myStr = ""
       Next i
    End With
     myKey = myDic.keys
      myR = Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, lastCol))
       For i = 0 To UBound(myKey)
        myAry = Split(myKey(i), "_")
         For j = 0 To UBound(myAry)
          myR(i + 1, j + 1) = myAry(j)
         Next j
       Next i
      Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, lastCol)) = myR
       Set myDic = Nothing
       wS.Activate
       MsgBox "完了"
End Sub

まずはこの程度で・・・m(_ _)m
    • good
    • 1

作業列にif関数で判断するようにして、オートフィルターをかけて消す

    • good
    • 0

そんな関数はありません。


単に、昇順/降順で並べ変えて、或いはフイルターを利用して、
必要な集団を削除する、これが一番早いでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!