excel - 数据扩展时自动复制公式

标签 excel vba worksheet-function

大家好,我有大量数据,每周更新两次。数据集不断缩小和增长。
我的问题是,虽然我很容易手动删除或扩展使数据可用的公式,但我想自动化这个过程。
这些公式涵盖 10 列。

好的 - 需要帮助,我似乎无法理解 Worksheet_change - 请帮助。

该工作表名为“数据”。

我正在使用名为“task no”的 Col A 来扩展公式。

公式在 Y 到 AJ 列中。

我想要的只是将自己扩展到行中最后一个条目的公式 - 听起来很简单??????

按目前覆盖 30,000 行的数据,

另一件事是,使用复制和粘贴宏将数据导入电子表格,这是否部分导致了我的问题?

在 13.30 插入

这是我尝试过的

Sheets("data").Select 

Bot = Range("A3").End(xlDown).Row 

Range("Y30000", "AJ30000").Select 

Range("Y30000", "AJ30000").Copy 

Selection.AutoFill Destination:=Range("Y30001" & Bot &, ":AJ30001" & Bot), 

Type:=xlFillDefault

请帮助(再次)

最佳答案

我可以想到两种方法,一种直接使用 Excel,另一种使用 VBA。

测试场景:

假设我们有包含可变数据的 A 和 B 列,然后是包含公式的 C 和 D 列(一旦您在后台登录,包含公式的列的数量就不重要了)。

此外,我们在 C 列中的公式为 =A+B,在 D 列中为 =A-B(C1=A1+B1,D1=A1-B1 等)。

电子表格:

  • 在公式中添加一个测试以检查 A 列中是否有任何值。如果没有值,我们将不会在单元格中放置任何信息。示例:C1=IF(LEN(A1)>0,A1+B1,"")/D1 = =IF(LEN(A1)>0,A1-B1,"")。使用此公式,您可以将公式复制到整个列中,如果不存在数据,则不会显示任何内容。
  • 优点:易于实现
  • 缺点:计算时间可能需要很长时间,具体取决于您的公式

  • VBA:
  • 一旦工作表中的数据发生更改,您可以使用 Worksheet_Change() 实现一个例程来更新公式。
  • 优点:需要最低限度的 VBA 知识(如果 SO 中的人为您构建代码,则几乎不需要)
  • 缺点:如果你不懂VBA,你可能要依赖别人来实现。

  • 希望它能指导您解决问题!

    编辑:

    执行此操作的 VBA 公式将是这样的......
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        Dim lCellCount As Long
        Dim lFormulaCount As Long
        Dim oWorkSheet As Excel.Worksheet
        Dim oRangeSource As Excel.Range
        Dim oRangeDest As Excel.Range
    
        'Define sheet
        Set oWorkSheet = Worksheets("Data")
    
        'Count how many entries we have in our dataset now
        lCellCount = oWorkSheet.Range("A1").End(xlDown).Row
    
        'Count how many formulas we have to proper delete
        lFormulaCount = WorksheetFunction.CountA(oWorkSheet.Columns("Y"))
    
        If lCellCount <> lFormulaCount Then
    
            'I assume we'll have at least one line in our report...
            If lFormulaCount > 2 Then oWorkSheet.Range("Y3:AJ" & lFormulaCount).ClearContents
    
            Set oRangeSource = oWorkSheet.Range("Y2:AJ2")
            Set oRangeDest = oWorkSheet.Range("Y2:AJ" & lCellCount)
    
            oRangeDest.Formula = oRangeSource.Formula
    
        End If
    
    End Sub
    

    Rgds

    关于excel - 数据扩展时自动复制公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5498065/

    相关文章:

    vba - 在 VBA 中为 protected Excel 工作表指定用户权限

    excel - 循环遍历已过滤的枢轴项目

    excel - 使用编号递归地列出文件和文件夹

    excel - WorksheetFunction.CountA - 升级到 Office 2010 后无法正常工作

    c++ - exe文件在C++中不是内部或外部命令,也不是可运行的程序或批处理文件

    excel - 基于 J 列中特定值的粗体单元格

    vba - Excel VBA "Out of Memory"调试技巧

    vba - Excel 2003 : Programmatic sort of sheet in different workbook

    excel - pretty-print Excel 公式?

    excel - 将 Excel 中的日期字段转换为文本