excel数组公式:不需要'ctrl-shift-enter'?

按f2编辑数组公式(例如{= MATCH(TRUE,(B2:B100)> 0,0)}后,大括号会消失。 编辑完成后,你必须按ctrl + shift + enter使大括号重新出现。

即使您按下正常的“input”,是否还有一些设置保留{}?

同样在复制上面的单元格(即包含数组公式)之后,您不能将其粘贴到10个其他单元格上。 您一次只能将其粘贴到一个新的单元格中。 是否有办法一次粘贴到多个单元格上?

谢谢

只要复制单元格而不是在公式栏中复制公式,就应该复制和粘贴数组公式并保留它的数组。 如果您向下拖动或填充单元格,它也可以很好地复制。 这可能是,如果你想保持范围B2:B100拖动时,然后使用$ B $ 2:$ B $ 100停止递增。

F4是一个很好的捷径,可以帮到这里。 将光标置于B2:B100上并按F4。

如果你想执行某些单元格总是保留公式数组我可以想到一个肮脏的解决方法,但我认为它可能有更多的负面比正面。

劣势:

它涉及VBA

它将清除撤消堆栈/剪贴板

– 这可能更令人困惑

解决方法

标记公式必须是一个数组公式,并且对结果没有影响的公式。 例如(0*0)+ 。 然后这个术语可以被检查,并且通过代码总是一个数组公式。

所以你的公式成为{=(0*0)+MATCH(TRUE,(B2:B100}>0,0)}

然后在THISWORKBOOK中 在这里输入图像说明

input此代码

 Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim cell As Range For Each cell In Target If Target.Cells.Count = 1 Then If InStr(1, Target.Formula, "(0*0)+", vbTextCompare) And _ Target.HasArray = False Then Target.FormulaArray = Target.Formula End If End If Next cell End Sub 

当单元格更改时,代码将检查术语(0 * 0)+,并将其作为数组公式指定为数组公式。

有几种方法可以将数组公式转换为“常规”公式 – 这可能对您有所帮助。 例如,在这种情况下,添加的INDEX函数意味着可以以正常方式input公式

=MATCH(TRUE,INDEX(B2:B100>0,0),0)