webdevqa.jp.net

Excel 2007:各行に低い値の黄色、高い値の赤を表示する条件付き書式

約300行のスプレッドシートがあります。各行には約15列があり、各セルには数値が含まれています。各行は製品に対応しています。

製品ごとにExcelを取得して、最も高い数値のセルを赤で、最も低い数値を黄色で、その間に数値のグラデーションを付けて強調表示します。これは、行(具体的には、データを含む行の15個のセル)を選択し、[条件付き書式]> [カラースケール]> [赤黄色のカラースケール]をクリックした場合に発生します。

ただし、300行あるため、各行を個別に選択して条件付き書式を設定するには時間がかかりすぎます。一方、範囲全体を選択して条件付き書式を適用すると、Excelは範囲全体に基づいて色を計算しますが、実際には行ごとに計算します。たとえば、次のサンプルデータを見てみましょう。

1 2 3
4 5 6
7 8 9

黄色にY、オレンジにO、赤にRを使用したい出力は次のとおりです。

Y O R
Y O R
Y O R

ただし、範囲全体を選択して条件付き書式を適用すると、次のようになります。

Y Y Y
O O O
R R R

一度に1行実行せずにこれを達成する方法はありますか?

14
Michael Pavey

これは、選択した各行の条件付きフォーマットを作成するマクロです。これは、最初の行のフォーマットを選択範囲の各行にコピーすることによって行われます(完全にではなく、1つずつ)。 B1:P1をデータテーブルの最初の行への参照に置き換えます。

Sub NewCF()
    Range("B1:P1").Copy
    For Each r In Selection.Rows
        r.PasteSpecial (xlPasteFormats)
    Next r
    Application.CutCopyMode = False
End Sub

使用するには、データセット内のフォーマットされていない行(私の場合はB2:P3)を強調表示してから、マクロを実行します。以下の例では、最初の2行の最大数がそれぞれ5および15であることに注意してください。両方のセルは濃い赤です。

しかし、これよりも速い解決策があると確信しています。

enter image description here

15
Ellesa

これを実現する最も簡単な方法は、増分コピー/貼り付けです。最初に、1行を希望どおりにフォーマットします。次に、フォーマットをコピーして、2行目のみに貼り付けます。行1と2の両方をコピーし、フォーマットを行3と4に貼り付けます。すすぎ、繰り返します。コピー4、過去4、コピー8、貼り付け8、コピー16、貼り付け16。16などの適切な量になったら、最大数が64または128になるまで数回貼り付けます。次に、これらをコピーしてフォーマットを貼り付けることができ、以前よりも多くの領域を指数関数的にカバーしています。

これはエレガントではありません。私の経験では、条件付きでフォーマットされたeat row startをフォーマットするために必要なリソースは、約2500行に達します...しかし、それで仕事は完了です。

リソースを独占する、すべての行に対して個別の条件付きフォーマットを作成しないロジックがあったらいいのに...

5
Poultron

これとVBAを介してこれを行う方法の他の例を見つけただけで、考えてみたところ、スクリプトを知らなくても、コピーする必要もなく、同じことを比較的迅速かつ簡単に行う方法を見つけました。

目的の条件付き書式を任意の行に適用し、行全体を強調表示します。次に、境界線に沿った任意の場所(マウスは移動アイコン)を右クリックし、次の行にドラッグします。ポップアップ表示されるコンテキストメニューで、[ここにフォーマットのみコピー]を選択します。これで、条件付きフォーマットが両方の行に個別に適用されるはずです。次に、これを再帰的に続けますが、一度に2行以上を選択してコピーできるようになりました。

上記のコードのようなワンショット取引ではありませんが、一度に1行実行するよりも指数関数的に高速です。お役に立てれば。

0
Chris S

条件フォーマットを1つの行に適用することもできます。行を再度強調表示し、「フォーマットペインタ」をダブルクリックしてロックします。下矢印キーを使用して、条件を他の行に適用します。

私の会社では通常、Excelでマクロをブロックしているので、これでうまくいきます。それもあなたに役立つことを願っています。

0
Genx