按 f2 编辑数组公式后,例如 {=MATCH(TRUE,(B2:B100)>0,0)},大括号当然会消失。编辑后,您必须按 ctrl + shift + enter 才能使大括号重新出现。
即使您按正常的“输入”,是否有一些设置可以保留 {}?
同样在复制上面的单元格(即包含数组公式)之后,您不能将其粘贴到 10 x 其他单元格上。您一次只能将其粘贴到一个新单元格上。有没有办法一次粘贴到多个单元格上?
谢谢
按 f2 编辑数组公式后,例如 {=MATCH(TRUE,(B2:B100)>0,0)},大括号当然会消失。编辑后,您必须按 ctrl + shift + enter 才能使大括号重新出现。
即使您按正常的“输入”,是否有一些设置可以保留 {}?
同样在复制上面的单元格(即包含数组公式)之后,您不能将其粘贴到 10 x 其他单元格上。您一次只能将其粘贴到一个新单元格上。有没有办法一次粘贴到多个单元格上?
谢谢
只要您复制单元格而不是复制公式栏中的公式,数组公式应该可以很好地复制和粘贴并保留它的数组。如果您向下或向下拖动/填充单元格,它也可以很好地复制。可能是如果您想在拖动时保持范围 B2:B100 然后使用 $B$2:$B$100 来阻止它增加。
F4 是一个不错的捷径,可以在这里提供帮助。将光标放在 B2:B100 上,然后按 F4。
如果您想强制某些单元格始终保留公式数组,我可以想到一个肮脏的解决方法,但我认为它可能有更多的负面因素而不是正面因素。
负面:
-它涉及VBA
- 它将清除撤消堆栈/剪贴板
- 这可能更令人困惑
解决方法
标记公式必须是数组公式,其术语对结果没有影响。例如(0*0)+
。然后可以通过代码检查并使其始终为数组公式。
所以你上面的公式变成了{=(0*0)+MATCH(TRUE,(B2:B100}>0,0)}
然后在 THISWORKBOOK
输入此代码
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 函数意味着可以以正常方式输入公式
=MATCH(TRUE,INDEX(B2:B100>0,0),0)