Excel 检查单元格是否已填充

Excel 检查单元格是否已填充,excel,vba,Excel,Vba,我有一个HTML报告,可以在Excel中打开。我已经编写了宏来格式化此报告,因此它是可排序的,并且可以应用过滤器 我试图抓住斜杠之间的文本。报告大小(行数)未知 A列为空。列B将包含完整的路径名。如果填充了B列,则C列的文本应位于斜杠之间 例如,B列包含R:\testdocuments\test.html。我希望C列包含testdocuments C列的代码: Range("C9").Select ActiveCell.FormulaR1C1 = _ "=MID(RC[-1], FIND

我有一个HTML报告,可以在Excel中打开。我已经编写了宏来格式化此报告,因此它是可排序的,并且可以应用过滤器

我试图抓住斜杠之间的文本。报告大小(行数)未知

A列为空。列B将包含完整的路径名。如果填充了B列,则C列的文本应位于斜杠之间

例如,B列包含R:\testdocuments\test.html。我希望C列包含testdocuments

C列的代码:

Range("C9").Select
ActiveCell.FormulaR1C1 = _
    "=MID(RC[-1], FIND(""\"",RC[-1])+1, FIND(""\"",RC[-1], FIND(""\"",RC[-1])+1)-FIND(""\"",RC[-1])-1)"
Range("C9").Select
    Selection.AutoFill Destination:=Range("C9:C65000"), Type:=xlFillDefault
Range("C9:C20000").Select
这是无效的,因为对任何内容进行排序/筛选都需要花费很长时间


如何检查B列是否已填充,如果已填充,如何使用斜杠之间的文本填充C列,以便能够按目录进行筛选?

首先,有几个一般提示:

  • 编写宏时,可以使用范围而无需选择它们
  • 在宏的开头使用以下代码以防止应用程序设置动画(这会使其变慢):
    application.screenUpdate=False

    编辑:确保完成后将其设置回“True”

  • 您可以使用
    Range(“A1”).SpecialCells(xlCellTypeLastCell).row
    ,而不是
    Range(“C9:C65000”)
    ,让Excel为您查找最后一行
  • 因此,宏可能如下所示:

    Sub FillFormulas()
        Dim row As Integer
        Application.ScreenUpdating = False
        row = Range("B9").SpecialCells(xlCellTypeLastCell).row
        Range("C9").Formula = "=MID(B9, FIND(""\"",B9)+1, FIND(""\"",B9, FIND(""\"",B9)+1)-FIND(""\"",B9)-1)"
        Range(Range("C9"), Range("C" & row)).FillDown
    End Sub
    

    首先,以下是一些一般提示:

  • 编写宏时,可以使用范围而无需选择它们
  • 在宏的开头使用以下代码以防止应用程序设置动画(这会使其变慢):
    application.screenUpdate=False

    编辑:确保完成后将其设置回“True”

  • 您可以使用
    Range(“A1”).SpecialCells(xlCellTypeLastCell).row
    ,而不是
    Range(“C9:C65000”)
    ,让Excel为您查找最后一行
  • 因此,宏可能如下所示:

    Sub FillFormulas()
        Dim row As Integer
        Application.ScreenUpdating = False
        row = Range("B9").SpecialCells(xlCellTypeLastCell).row
        Range("C9").Formula = "=MID(B9, FIND(""\"",B9)+1, FIND(""\"",B9, FIND(""\"",B9)+1)-FIND(""\"",B9)-1)"
        Range(Range("C9"), Range("C" & row)).FillDown
    End Sub
    

    @Lance,我确信将Application.ScreenUpdate设置为True并不是一个坏主意,但我已经编写了大量的宏,在这些宏中我没有也从来没有注意到任何不良影响。@DanThMan,这很有趣,我从来没有尝试过不这样做,也许它在代码完成后会自动重置。@Lance,我确信将Application.ScreenUpdate设置为True并不是一个坏主意,但我已经编写了大量的宏,在这些宏中我没有也从来没有注意到任何不良影响。@DanThMan,这很有趣,我从来没有尝试过不这样做,也许代码完成后它会自动重置。