0

セルA1〜A10に数字が入力されているとします。セルB1の最初の数式は=A1-A6です。ただし、セルA3をストライクアウトし(可能な場合はストライクアウトの下にコンテンツが表示されるようにします)、B1の数式でその変更を認識してから、自動的に=A1-A7に調整します。 (A1からその下のセル5の「打ち消されていない」セルの数を引いてほしいという考えです)。次に、セルA5を削除する場合は、数式を=A1-A8などに調整します。誰かがこれを行う方法を知っていますか?

4

1 に答える 1

1

編集#1:入力を読み間違えました、ごめんなさい)

少し単純ですが、仕事をします:通常の代わりに+ +を入力=A1-INDIRECT("A"&SMALL(IF(A:A<>"",ROW(A:A),""),6))して押します - これにより、ARRAY 式が定義され、その周りに括弧が表示されます (ただし、手動で入力しないでください!)。CTRLSHIFTENTERENTER{}

計算を高速化するために、A:A を制限された範囲に置き換えることができます。

サンプル ファイル (結果の数式は黄色でマークされています): https://www.dropbox.com/s/sy7zkg71xtfgib9/Subtract5th.xlsx

編集#2:「三振」を読み間違えました、ごめんなさい)

フォント スタイル (同様のセル プロパティ) は、既定の Excel 関数では読み取れない可能性があります。そのため、次のような UDF を追加する必要がありますStrikeOut

  1. ALT- - これを押すF11と、VBA エディターが開きます。
  2. 新しいモジュールを挿入: Insert > Module.
  3. 追加したモジュールにコードを貼り付けます:

    Function StrikeOut(R As Range) As Long
    Dim c As Range
    StrikeOut = 0
    For Each c In R.Cells
        If c.Font.Strikethrough = True Then StrikeOut = StrikeOut + 1
    Next
    End Function
    
  4. 数式を B1 に追加します。=A1-INDIRECT("A"&(6+StrikeOut(A2:A10)))

  5. の任意のセルに取り消し線フォントを設定しA1:A10ます。
  6. 残念ながら、セル形式の変更は変更イベントをトリガーしないためF9、シートのセル値を押すか変更して再計算し、結果を更新する必要がありますB1

サンプル ファイルは共有されています: https://www.dropbox.com/s/n9o7tn3ks3x8nza/StrikeOut.xlsm

PS少なくとも私にとっては非常に役に立ちました)))

于 2013-02-03T12:57:26.890 に答える