条件付き書式の数式と範囲が自動的に変更されないようにするにはどうすればよいですか?


24

スプレッドシート内のデータをコピー、削除、または移動すると、条件付き書式の数式と範囲が自動的に調整されることがわかりました。これはいいアイデアですが、私にとっては奇妙な方法で物事を壊す傾向があります。

これを回避するために、スプレッドシート全体に適用し、列ヘッダーをキーオフするルールを作成して、確認したいデータを強調表示しました。

例:に=AND(A$1="Check This Column For Blanks),ISBLANK(A1))適用=$1:$1048576

ただし、シート全体に明示的に適用されたルールを使用しても、シートで作業すると自動的に調整されます(そうすることで奇妙な方法で壊れます)。

どうすればこれを回避できますか?


スプレッドシート全体を使用できない場合があります...何をしているのか、より具体的な例を挙げていただけますか?
ドクトロライチャード

あなたはおそらくスクリーンショットを持っていて、どの領域が壊れているかを示してくれますか?
ジェリー

@JohnBensinそれはまさに私が探していたもののようですね。次回もそのことを思い出そうと思います。
イスジ

@Iszi答えとして追加しました。名前付き範囲を追加する方法を知っていると思いますが、将来の訪問者のために回答に詳細を含めます(Excelの使用を初めて学んだときは覚えていませんでした)。
ジョンベンシン

何がうまくいかないかについての記事:Excel 2010条件付き書式設定の悪夢。彼らは確かにそれに多く作られたより悪く少し良いことをしようとしている間...
RomanSt

回答:


7

セルの移動、挿入、削除など、どのような状況で変化しない範囲が必要な場合は、名前付き範囲とINDIRECT関数を使用しました。

たとえば、セルに常に範囲を適用する場合A1:A50は、Name Managerを使用して名前付き範囲を定義しました。

名前付き範囲を追加

ネームマネージャで、新しい範囲を追加し([新規]をクリックします)、[参照先:]フィールドで、INDIRECT関数を使用して、=INDIRECT("A1:A50")またはなどのセル範囲を指定します=INDIRECT("Sheet!A1:A50")。範囲は技術的には単なるテキスト引数であるため、セルを再配置してもセルが更新されることはありません。

また、これは少なくともExcel 2010とExcel 2013で機能します。スクリーンショットは2013年のものですが、過去に2010年にこの手法を使用しました。

注意事項

  1. この不変性はあなたをつまずかせる可能性があることを覚えておいてください。たとえば、シートの名前を変更すると、名前付き範囲が壊れます。

  2. かなりの数のセルでこの戦略を使用すると、パフォーマンスがわずかに低下することに気付きました。職場で使用しているモデルでは、数千の異なるセル範囲にまたがる名前付き範囲でこの手法を使用していますが、これらの範囲のセルを更新するとExcelが少し遅く感じます。これは私の想像かもしれませんが、ExcelがINDIRECTに対して追加の関数呼び出しを行っているという事実かもしれません。


名前付き範囲は、ターゲットセルを参照する便利な速記方法を提供しますが、INDIRECT関数を単独で使用することはできませんか?
Iszi

@Isziはい、そう思います。ただし、あなたが言うように、名前付き範囲は便利であり、ワークブック全体の複数の場所にある同じセル範囲を参照することがよくあります。パフォーマンス上の理由から、範囲をできるだけ小さくして、必要な場合にのみ変更するようにしています。したがって、名前付き範囲を使用すると、1か所で変更するだけで済みます。
ジョンベンシン

@Isziこの方法を使用することになりましたか?あなたが私が言及しなかった落とし穴または欠点に遭遇するならば、私に答えを知らせてください。私はこの戦略を十分な場所で使用しているので、あなたや私を悩ませるために何かが戻ってくるのは望ましくありません。
ジョンベンシン

まだ実装していませんが、次回この問題に遭遇したときに実装するでしょう。問題がある場合はお知らせします。
イスジ

9
条件付き書式設定ルールマネージャーの[適用先]列で名前付き範囲を使用しようとしましたが、[OK]または[適用]をクリックすると名前付き範囲が拡張されます。私は間違っていますか?
ミハイアレクサンドルビールサン14

2

ルールは非常に簡単に破れることがわかりましたが、ここでは試してみて、ルールに違反していないように見えるものを紹介します。

セル内のテキストを変更できます。行を追加する必要がある場合は、テーブルの最後にデータを追加し、並べ替えます。行を削除する必要がある場合は、テキスト/番号のみを削除してから、テーブルを再ソートしてください。

これは、列に適用される条件付き書式設定があり、通常は列全体に書式設定を行う場合に役立ちます。$ F:$ F。部分的な範囲の書式を設定している場合でも機能するはずです。追加/削除と書式設定が必要なすべてのデータが元の範囲パラメータ内にあることを確認してください。

それは私にとっても大きな不満です。

これがお役に立てば幸いです。


1

私はないんだけどSO確認してくださいと私は頻繁に同じ問題に直面しています。

条件付き書式(CF)パネルの[適用先]フィールドは常に動的に機能すると思います。したがって、すべての参照を常にformatに変換します=$A$1:$A$50

苦痛です。


明示的宣言または変数宣言($または$なし)を使用した場合でも、そうではありません。
ポール

1

INDIRECT関数とROW条件付き書式ルールの関数を使用すると、Excelが新しいルールを作成し、範囲を変更する問題が解消されることがわかりました。

たとえば、月が1行から次の行に変わったときに、小切手帳の登録スプレッドシートの行間に行を追加したいと考えました。したがって、CFルールの式は次のとおりです。

=MONTH(INDIRECT("C"&ROW()))<>MONTH(INDIRECT("C"&ROW()-1))

ここで、スプレッドシートの列Cには日付が含まれています。範囲に特別なことをする必要はありませんでした(範囲名などを定義する必要はありませんでした)。

したがって、元のポスターの例では、CFルールの「A1」または「A $ 1」の代わりに、次を使用します。

INDIRECT("A"&ROW())

0

よく似た問題が発生しました。行を追加し、数式をコピーして、列と行のサイズを調整してシートの外観をフォーマットするマクロをいくつか作成しました。この問題は2つの場合のいずれかで発生することがわかりました。

1)INSIDEから何かが適用されると、この範囲外でカット/ペーストされます。

2)「適用先」内に結合されたセルがあり、行または列のいずれかが調整される場合。

セルの結合の問題が発生している場合、Excelはすべての結合を解除し、条件付きアプリケーションを再計算し、すべてのセルを調整(行の追加または削除)してから再結合する必要があります。私たちには見えませんが、それがどのように適用されるようです。

これで解決策を見つけるのに役立つかもしれないと思った。

-T


0

これには簡単な解決策があります。

範囲内のセル(範囲内の壊れていないセル)に移動し、書式ペインタをクリックして、列全体に貼り付けます。ここでも、破損した場所が表示されます。範囲を破損したセルに対して書式ペインタを実行するだけです。さて、これも少し長く見えるかもしれませんが、このための単純なマクロを作成するだけです。


0

条件付き書式の式ではR1C1INDIRECT関数で表記法を使用します。
例1:

If same row column A = 1 ...

=IF($A1=1,1,0) becomes 
=IF(INDIRECT("RC1",FALSE)=1,1,0)

例2:
If same row column A = 2 AND next row column A = 3...

=IF(AND(($A1=2),($A2=3)),1,0) becomes
=IF(AND((INDIRECT("RC1",FALSE)=2),(INDIRECT("R[1]C1",FALSE)=3)),1,0)

0

使用例がレポートスプレッドシートの生成である場合、これはうまく機能するはずです。


すべてのデータ入力を行った後、最終データの単純な更新も手動で実行する場合は、一度のセットアップ手順でExcel の過度の有用性をバイパスできます。

データが正常に(行で)配置されていると仮定します。

  1. すべてのデータを1つのシートに入力します。このチュートリアルでは、シートに名前を付けますInput条件付き書式を適用しないでください。値を心のコンテンツに自由にシフトしてください(例:削除/挿入/コピー/貼り付け)
  2. 別の空のシートを作成し、好きな名前を付けます(例Output)。列幅やヘッダーの書式設定など、グローバルな書式設定を手動でコピーします(ヘッダーの内容ではなく、書式設定のみ)。
  3. 交換してください$A$1あなたのヘッダー行の開始位置と、次の式で、その後、あなたが出力したいすべての列と行全体にコピーします=IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"") IF(LEN(...)>0,...,"")Excelはまたため、ステートメントが必要で親切あなたと用途のためのデータ・タイプを判別0空のセルのためにそうでないと、-1用語は序セマンティクス対オフセットから来ます)
  4. Outputシートに条件付き書式を適用します。

これにより、Excelが自動ブッチャーするセル参照なしでInputデータシートがOutputシートにコピーされるため、Outputシートで条件付き書式を確実に定義できます。

データのOutputサイズがInput変更されたときに、シート内で数式が適用される範囲を手動で拡張する必要があります。

セルの結合は避けてください。


PSこの質問は何度も尋ねられています(ExcelのクローンであるGoogleスプレッドシートにも適用されます)。

  1. Excelの条件付き書式の断片化
  2. (これ)条件付き書式の数式と範囲が自動的に変更されないようにするにはどうすればよいですか?
  3. カットアンドペーストで条件付き書式を保持
  4. Excel:スプレッドシート全体に条件付き書式を永続的に適用する方法
  5. Excelが条件付き書式を処理するのはなぜですか?

0

書式なし(Paste > Paste Special > Unicode Textまたは同様)で貼り付けた場合、特別な書式はコピーされないため、「適用先」範囲は変更されません。

行/列を削除できますが、それらを挿入すると、「適用先」範囲が分割されます。

最後の行/列を選択し、「カーソル」の左下にある小さな正方形で「コピー&ドラッグ」することにより、領域を拡張します。このように、「適用」範囲はそのまま残ります。(これは挿入のように行や列の数式を拡張しないことに注意してください。)

ただし、フォーマットなしで貼り付けるなどのことを覚えておくのは非常に苦痛です。通常はそうしません。

また、フォーマットするエリアの名前を定義することもあります。ルールでは使用されませんが、1つを除くすべてのルールを削除し、「適用先」セクションでエリア名を使用することで、ルールをクリーンアップできます。

Excel 16.3を使用してMacでテストしました(Office 2016 ...と思う)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.