26

「適用先」でオフセットまたは間接を使用しても機能しないようです。行を挿入した後に条件付き書式が壊れないようにする他の方法はありますか

$O$19:$O$105 などの範囲の条件付き書式があります。条件は「セルの値が > 10 の場合」で、赤色で書式設定されます。

問題は、Excel に行を挿入すると、この書式設定範囲が分割され、2 つの書式設定ルールが取得されることです。たとえば、範囲がそれぞれ $O$19、$O$21:$O$105、$O$20 の 2 つのルールの場合、20 行目に新しい行を挿入するとします。

通常、上記のような条件の場合、ルールが複数の範囲に分割されていても問題ない場合があります。しかし、「トップ 10 をハイライト」のような条件では、望ましくない結果が生じます。

私は運が悪かったので、次のことを試しました:

  1. 間接的な使用を試みましたが、Excel は数式を解決し、書式設定ルールを保存しているように見えるため、期待どおりに挿入が機能しません
  2. オフセットを使用してみました-ここでも、Excelは上記と同じ範囲を解決します。

行の挿入で壊れない条件付き書式を記述する方法を知っている人はいますか?

[編集]行の挿入が条件付き書式ルールの分割を引き起こしていないことに気付きました。また、行をコピーして、これを行っている挿入された行に貼り付けます。特別なペーストを選択して数式のみを選択すると、うまく機能します。

4

17 に答える 17

13

これが古いスレッドであることは知っていますが、非常にシンプルでうまく機能する別のソリューションを次に示します。

必要に応じて新しい行または列を挿入するだけです。次に、正しい条件付き書式を持つ行/列を選択してコピーします。作成したばかりの新しい行/列に Special を貼り付け、[条件付き書式をマージするすべて] のオプションを選択します。条件付き書式ルールが自動的に更新されるはずです。

Happy Excel-ing =)

于 2014-05-15T17:17:15.907 に答える
8

これは、条件付き書式の一般的な問題です。行を挿入したり、項目を移動したりする場合、Excel は、条件付き書式をセルに合わせて移動させ、セルを元の書式で挿入する (またはまったく挿入しない) と見なします。

そのため、変更に従って書式設定された範囲を分割するために最善を尽くします。残念ながら、「その最高」はあまり良くありません。幸運な場合、気付かないうちにフォーマット ルールが重複してしまうことがあります。不運なケースでは、適用範囲の一部またはすべてで壊れます。

これは、ListObjects (別名「Excel テーブル」) を使用する場合に特に問題になります。いくつかの行を挿入し、少し並べ替え、いくつかの値をドラッグすると、次に条件付き書式のリストを調べたときに、数十から数百の重複ルールが表示されます。(例: http://blog.contextures.com/archives/2012/06/21/excel-2010-conditional-formatting-nightmare/ )

私の経験では、混乱を修正する最も簡単な方法は、すべてのルールを削除して再作成する (または作成しない) ことです。

補足:

  • 適用範囲は常に絶対です。それを回避する方法はありません。
  • さらに悪いことに、条件付き書式は揮発性の数式のように扱われます。つまり、多くの場合 (別のファイルを開く、スクロールするなど) に再計算されます。分割に気付かない場合、しばらくするとアプリケーション全体の速度が大幅に低下する可能性があります。
  • VBA を使用する場合、少なくとも数式が他のワークシートを参照している場合は、おそらく Worksheet_Calculate イベントを使用することをお勧めします (名前に注意してください!)。
于 2013-05-30T08:53:14.680 に答える
3

レポートを作成しようとしているときにこの問題が発生していました.レポートが完成したら変更する必要はありませんが、レポートを作成している間、新しい行を追加し続け、新しい行ごとに条件付き書式が台無しになります.

これは決して良い解決策ではありませんが、VBA に頼らずに見つけることができる最善の方法でした。

a)条件付き書式ルールを列全体または一度に複数に適用する

たとえば、C2 と C17 に条件付き書式を設定する代わりに、列を 1 つ追加して、2 行目と 17 行目に「これ」と書き、C 列全体の書式設定を「他の列に「これ」と表示されている場合」に設定します。次に、この形式を適用します」

b) 適用先を $C$1:$C$2 に変更します。

c)変更を加えて行やものを挿入する

d) 次に戻って、Applies To を $C:$C に変更します。

そうすれば、何かを変更したり追加したりしている間、条件付き書式は存在しませんが、後で元に戻すことができます。

後日、さらに数行を追加する必要がある場合は、最初に $C:$C から $C$1:$C$2 に変更し、次に変更を加えてから $C:$C に戻します。 . そうすれば、私が以前に行ったことをすべて削除し、呪い、最初からやり直す場合のように、すべてのフォーマット規則をゼロから完全に書き直す必要はありません;)

行 1 または 2 の一番上に行を挿入することを計画している場合、それは機能しませんが、変更しないことがわかっている他の行にいつでも設定できます。

于 2014-11-04T02:10:39.000 に答える
1

あなたがしなければならないことは、1)新しい行を挿入することです2)クローンしたい行をコピーします3)特別な「条件付き書式のマージ」を貼り付けます

作成したワークブックを他のユーザーに共有してもらいたい場合、直感的ではなく、ユーザー トレーニングの山になります。

于 2014-12-30T14:09:21.220 に答える
1

私にとってうまくいくのは、行を挿入するときに、別の行からフォーマットをコピーしないことです。数式のみをコピーして貼り付けます。条件付き書式は分割されません。

于 2014-12-04T19:17:31.443 に答える
1

この正確な問題に対する私の解決策は、ソース コピーからフォーマットをクリアすることでした。手順:

  1. ソースをクリップボードにコピー
  2. 新しいエクセル文書を開く
  3. 形式を選択して貼り付け、数式を選択 (値と数式をコピーし、書式設定を省略)
  4. これをクリップボードにコピー
  5. これで、使用する前にソースに貼り付け直すか、条件付き書式を使用して空白行をシートに挿入し (行を挿入するだけでは、条件付き書式ルールの範囲は変更されないことに注意してください)、クリップボードの内容を新しい行に貼り付けることができます。

これは、MS Excel 2016を使用して機能しました

于 2016-09-08T03:25:42.103 に答える
1

以前に投稿された内容に同意します。値のコピーと貼り付け (または数式の貼り付け) は、条件付き書式を分割しないように完全に機能します。

私はそのために少し怠け者です。そして、私のスプレッドシートを使っている人たちにそんなことをさせたくありません。また、値のコピーと貼り付けを覚えているかどうかもわかりません。:(

このソリューションがニーズに合うかどうかはわかりませんが、すべての条件付き書式を削除し、ブックを開くたびに正しい条件付き書式を再適用することにしました。

このマクロはブックが開かれるたびに実行されるため、ユーザーはコピーと貼り付けの方法を変更する必要はありません。マクロがそこにあることさえ知る必要はありません。マクロを手動で実行する必要はありません。それは自動です。これにより、ユーザーエクスペリエンスが向上すると思います。

このコードをコピーして「This Workbook」モジュールに貼り付ける必要があることに注意してください。通常のモジュールではありません。

Private Sub Workbook_Open()
'This will delete all conditional formatting and reapply the conditional formatting properly.
'After copying and pasting the conditional formatting get split into two or more conditional formattings. After a few
'weeks there are so many conditional formattings that Excel crashes and has to recover.

Dim ws As Worksheet, starting_ws As Worksheet


Set starting_ws = ActiveSheet   'remember which worksheet is active in the beginning
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "InvErr" Then
        ws.Activate
        Cells.FormatConditions.Delete
        ''Every Other Row Tan
        Range("A4:M203").FormatConditions.Add Type:=xlExpression, Formula1:="=ISODD(ROW(A4))"
        Range("A4:M203").FormatConditions(Range("A4:M203").FormatConditions.Count).SetFirstPriority
        Range("A4:M203").FormatConditions(1).Interior.PatternColorIndex = xlAutomatic
        Range("A4:M203").FormatConditions(1).Interior.ThemeColor = xlThemeColorDark2
        Range("A4:M203").FormatConditions(1).Interior.TintAndShade = 0
        Range("A4:M203").FormatConditions(1).StopIfTrue = False

        ''Highlight Duplicates Red
        Columns("B").FormatConditions.AddUniqueValues
        Columns("B").FormatConditions(Columns("B").FormatConditions.Count).SetFirstPriority
        Columns("B").FormatConditions(1).DupeUnique = xlDuplicate
        Columns("B").FormatConditions(1).Font.Color = -16383844
        Columns("B").FormatConditions(1).Font.TintAndShade = 0
        Columns("B").FormatConditions(1).Interior.PatternColorIndex = xlAutomatic
        Columns("B").FormatConditions(1).Interior.Color = 13551615
        Columns("B").FormatConditions(1).Interior.TintAndShade = 0
        Columns("B").FormatConditions(1).StopIfTrue = False
    End If
Next

starting_ws.Activate   'activate the worksheet that was originally active
Application.ScreenUpdating = True

End Sub
于 2018-09-14T16:58:51.680 に答える
1

行の挿入が条件付き書式ルールの分割を引き起こしていないことに気付きました。また、行をコピーして、これを行っている挿入された行に貼り付けます。特別なペーストを選択して数式のみを選択すると、うまく機能します。

ただし、条件付き書式の「適用先」フィールドで「間接」または「オフセット」を使用する必要があるかどうかは疑問です。もしそうなら、それは問題になるでしょう。

于 2012-09-20T19:20:35.687 に答える
0

これは、彼が正しい軌道に乗る可能性のある同様のスレッドです。

条件付き書式設定に Worksheet_Change イベントを使用する方法は?

コメントで言及した VBA アプローチとともに、挿入の影響を受けない可能性のある R1C1 スタイルの書式設定 (テストされていない) の回避策の概要を説明します。

于 2012-09-18T16:37:12.033 に答える
0

次のように、新しい行または列を挿入するために一貫して機能し、条件付き書式設定ルールの継続性を保持する単純なプロセスを見つけました (少なくとも Office 2010 では)。

  1. 保持する条件付き書式を含む行または列の上、下、左、または右に、必要な数の新しい行または列を単純に「挿入」します。

注 a) 条件付き書式は、それ以上何もしなくても、挿入された行または列に自動的に適用されます。書式設定は、隣接する行または列から継承されている必要があります。b) 境界線の書式設定も、新しく挿入されたセルにコピーされている必要があります。

  1. 新しく挿入されたものに隣接し、コピーする条件付き書式 (および該当する場合は数式とデータ) を含む行、列、または範囲を (クリックして) 選択します。

  2. 選択した範囲の左下または右下隅にマウスを移動し、プラスの "+" 記号が表示されるまで待ちます (外観が似ているため、行のサイズ変更ガジェットと混同しないでください)。

  3. 「+」を左クリックしたまま、書式設定する目的の行、列、または範囲をドラッグして放します。

注: 1 つのセルのみを参照する条件付き書式ルールを作成します: 例) 「この式が true の場合に値をフォーマットする:」というタイトルのフィールドで、... =AND($B8="",$C8=" などのルールを作成します。 ",$D8="",$K8<>"")、ここで、このルールは範囲を言うために適用されます... =$B$8:$D$121,$J$8:$M$121.

于 2014-11-20T00:54:52.397 に答える