当前位置: 首页 > 知识库问答 >
问题:

Excel宏将COUNTA添加到新的顶行

瞿和硕
2023-03-14

我有一个Excel 2013工作表,其中每列都有一个标题行,然后在部分或所有单元格中使用“DIRECT”一词。列中没有其他数据,只有“直接”或空白。没有列为空,它们都至少有一次“DIRECT”。

我正在寻找一个可以执行以下操作的宏:

  • 添加新的顶行

我录制了一个接近的宏,但它有两个问题:

  1. 它将COUNTA数据添加到工作簿的最后一行,这是不需要的(填充的列将是几百,而不是几千)
  2. 它引用特定的单元格区域,因此可以切断具有更多行的工作表的数据
Sub AddColumnCountsRecorded()
'
' AddColumnCounts Macro
'

'
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "=COUNTA(R[2]C:R[15]C)"
    Range("J1").Select
    Selection.Copy
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveSheet.Paste
End Sub

如果有帮助:

>

  • 列“A”可以确定数据可能所在的最后一行(即“用户名”列,因此那里没有空白)-尽管最后一行也会因工作表而异。

    第2行(标题行)可以确定数据所在的最后一列—它没有空白列;在每一列中,至少有一个单元格有“DIRECT”一词。

    任何关于编辑现有宏或从头开始制作新宏的建议都将不胜感激!

    谢啦!

    更新:

    非常感谢Scott,这是我最终得到的结果-这将非空白单元格计数添加到活动工作表中,并在最后一行停止,其中包含数据。我只是直接调用它,没有下面建议的代码的第二部分:

    Sub AddColumnCountsRecorded()
    
        With ActiveSheet
    
            .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    
            Dim lRow As Long, lCol As Long
            lRow = .Range("A" & .Rows.Count).End(xlUp).Row
            lCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
    
            .Range(.Cells(1, 2), .Cells(1, lCol)).FormulaR1C1 = "=COUNTA(R[2]C:R[" & lRow & "]C)"
    
        End With
    
    End Sub
    
  • 共有1个答案

    柯鸿云
    2023-03-14

    试试这个。我做了一个单独的sub,您也可以传递工作表参考。

    Sub AddColumnCountsRecorded(ws As Worksheet)
    
        With ws
    
            .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    
            Dim lRow As Long, lCol As Long
            lRow = .Range("A" & .Rows.Count).End(xlUp).Row
            lCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
    
            .Range(.Cells(1, 2), .Cells(1, lCol)).FormulaR1C1 = "=COUNTA(R[2]C:R[" & lRow & "]C)"
    
        End With
    
    End Sub
    

    这样称呼它:

    Sub ColumnCount()
    
        AddColumnCountsRecorded Worksheets("Sheet1")
    
    End Sub
    
     类似资料:
    • 我有这样的布局: 在开始时,视图是一个半透明视图,它位于布局中所有内容的顶部。当我按下按钮时,我想将FrameLayout放在视图的顶部。我尝试了方法和,之后我调用了,但它们对我都不起作用。我觉得跟海拔属性有关系。 如有任何帮助,我们将不胜感激。谢谢你!

    • 在本章中,您将学习如何逐步编写一个简单的宏。 Step 1 - 首先,在Excel 20XX中启用“开发人员”菜单。 要执行相同操作,请单击文件→选项。 Step 2 - 单击“自定义功能区”选项卡,然后选中“开发人员”。 单击“确定”。 Step 3 - “开发人员”功能区出现在菜单栏中。 Step 4 - 单击“Visual Basic”按钮以打开VBA编辑器。 Step 5 - 通过添加按钮

    • 我在我的网站上使用MathJax,我想添加一些语义支持。 目前,我的MathJax配置是接收TeX输入并输出HTML-CSS输出(不幸的是,MathML在Chrome中工作不太好)。我还有一个jQuery函数,它接受任何类并将其转储到属性中。 下面的HTML。。。 用下面的脚本。。。 将输出。。。 显然,的内容将使用一系列跨度、类和样式进行样式化。我只是不打算在这里打这些。无论如何,在呈现数学之后

    • 我有一个模型类的,其中有一些项。如何将新项添加到的第一个位置,并将其他项移到旁边。

    • 我使用iText将数据填充到PDF中现有的AcroForm字段中。 我现在正在寻找将新的AcroForm字段添加到PDF的解决方案。iText是否可以做到这一点?如果是,我该如何做到这一点?

    • 在本章中,我们来学习如何逐步编写一个简单的宏。 第1步 - 首先,在Excel 2016中启用“开发者”菜单。要完成这个设置,请点击左上角菜单:文件 -> 选项。如下图所示 - 第2步 - 点击“自定义功能区”选项卡并选中“开发工具”。然后点击“确定”。如下图所示 - 第3步 - “开发工具”功能区出现在菜单栏中。如下图所示 - 第4步 - 点击 “Visual Basic” 按钮打开VBA编辑器