【发布时间】:2015-07-16 20:18:31
【问题描述】:
我尝试了类似“excel array formula: not have to 'ctrl-shift-enter'?”下的修复,这是我的公式:
=(0*0)+SUM(IF(A10=Bundle!$B$2:$B$58233,1/(COUNTIFS(Bundle!$B$2:$B$58233,A10,Bundle!$N$2:$N$58233,Bundle!$N$2:$N$58233)),0))
“修复前”公式有效,但是行数很多,Ctrl + Shift + 回车需要很长时间 共 2624 次。我按照建议添加了代码和上面的0*0,但它没有用。我必须做些什么来激活代码吗?
这篇文章和其他几篇在线帖子表明数组公式只会填充,但这也不起作用。
【问题讨论】:
-
您应该能够像其他任何方法一样向下拖动公式。当你这样做时会发生什么?另外,建议在哪里做(0 * 0)?我并不是说这是不正确的,只是看起来你从某个地方得到了一些提示,我只是好奇在哪里。 (即理解你的意思是“修复之前”)。另外,this question on SO 有帮助吗?
-
您会想到一个 Google-Docs 工作表,它会自动填充输入数组类型函数的单元格下方的单元格。
-
你提到的问题是我从哪里得到的(0 * 0)。它有以下代码: Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 将单元格作为目标中的每个单元格的范围 If Target.Cells.Count = 1 Then If InStr(1, Target.公式, "(0*0)+", vbTextCompare) And _ Target.HasArray = False Then Target.FormulaArray = Target.Formula End If End If End If Next cell End Sub
-
您可能还想研究一种替代解决方案,该解决方案不会使用引用 58232 行数据的数组公式填充 2625 行。
-
这是我找到的唯一解决方案,而不是手动计算每个客户帐户(捆绑列 B)中的每个位置(捆绑列 N)。对我的客户来说,这是一个价值 1000 万美元的问题,所以我想弄清楚。我将尝试仅提取我需要的列,然后进行小计。它可能在没有其他列存在的情况下工作(以前没有)。