如何过滤代码中的所有12位数字?

时间:2019-03-14 06:50:11

标签: excel vba

大家好,谢谢您的宝贵时间,我的第一篇文章,我是一个新手。

我正在尝试过滤Access to XMLHttpRequest at 'http://myIP_ANd_Port/icrm_mobile_mar12/index.php/login_api' from origin 'http://localhost:8100' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status. 列中的任何12位数字,以便以后将它们切成名为B的另一张纸。

我该如何编写代码来做到这一点?在下面的示例中,此方法非常有效,但仅适用于PPE

我也提供了屏幕截图。

243080700547

3 个答案:

答案 0 :(得分:4)

您使用的是通过CStr进行字符串转换的字符串,因此我假设C列中的值是真实数字。在这种情况下,简单的大于/小于就足够了。

从下到上工作,您可以避免修改增量。

with Worksheets("RAW DATA")

  I = .cells(.rows.count, "C").end(xlup).row
  For K = I To 1 step -1
    If .cells(K, "C").value2 > 99999999999 And  .cells(K, "C").value2 <= 999999999999 Then
        J = J + 1
        .rows(K).EntireRow.Copy Destination:=Worksheets("PPE").Range("A" & J)
        .rows(K).EntireRow.delete
    End If
  Next K

end with

答案 1 :(得分:0)

代替您的第一次出现

If CStr(xRg(K).Value) = "243080700547" Then

您可以使用

If Len(CStr(xRg(K).Value)) = 12 Then

检查字符串的长度是否为12。

问题:为什么您要第二遍检查?您已经在同一(第一张)支票的If区块中。

答案 2 :(得分:0)

您可以使用过滤器,而不是遍历整个日期,这可能比逐行复制要快得多,因为您可以一次复制所有内容。

这也适用于任何其他条件,只需调整.AutoFilter

Option Explicit

Public Sub FilterAndCopy()
    Dim DestRow As Long 'find destination row
    DestRow = Worksheets("PPE").Cells(Worksheets("PPE").Rows.Count, "A").End(xlUp).Row + 1

    With Worksheets("RAW DATA").UsedRange
        'filter
        .AutoFilter Field:=3, Criteria1:=">=100000000000", Operator:=xlAnd, Criteria2:="<=999999999999"
        'copy date (without headers)
        .Resize(RowSize:=.Rows.Count - 1).Offset(RowOffset:=1).SpecialCells(xlCellTypeVisible).EntireRow.Copy Destination:=Worksheets("PPE").Cells(DestRow, "A")
        'remove filter
        .AutoFilter
    End With
End Sub