1

f2 を押して {=MATCH(TRUE,(B2:B100)>0,0)} などの配列数式を編集すると、もちろん中括弧は消えます。編集後、ctrl + shift + enter を押して中括弧を再表示する必要があります。

通常の「Enter」を押しても {} を保持する設定はありますか?

また、上記のセル (つまり、配列数式を含む) をコピーした後、たとえば 10 x 他のセルに貼り付けることはできません。一度に 1 つの新しいセルにのみ貼り付けることができます。一度に複数のセルに貼り付ける方法はありますか?

ありがとう

4

2 に答える 2

2

配列数式を「通常の」数式に変換する方法はいくつかあります。たとえば、この場合、追加された INDEX 関数は、数式を通常の方法で入力できることを意味します。

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

于 2012-09-21T11:16:54.923 に答える
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 に答える