1

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

即使您按正常的“输入”,是否有一些设置可以保留 {}?

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

谢谢

4

2 回答 2

2

只要您复制单元格而不是复制公式栏中的公式,数组公式应该可以很好地复制和粘贴并保留它的数组。如果您向下或向下拖动/填充单元格,它也可以很好地复制。可能是如果您想在拖动时保持范围 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)+ 并将其分配为数组公式,如果它还不是一个。

于 2012-09-21T09:11:03.213 回答
2

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

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

于 2012-09-21T11:16:54.923 回答