列の値が変更されたときのシェーディングの変更(Microsoft Excel)
ダグには、部品番号の列を含むデータテーブルがあります。このデータは、部品番号の列でソートされています。部品番号は一意ではありません。たとえば、一部の部品番号は表に3回表示され、他の部品番号は5回表示されます。ダグは、テーブルの行が「緑色のバー」効果を持つようにテーブルをフォーマットしたいと考えています。
たとえば、最初の5行の部品番号が同じである可能性があるため、ダグはこれらの行を緑色でシェーディングする必要があります。次の2行は部品番号が異なるため、緑色の網掛けがないようにします。次の3行には次の部品番号があるので、それらは再び緑色になります。部品番号が変わるたびに、行の陰影(緑色または緑色ではない)が変わるはずです。
このタスクを実行する簡単な方法の1つは、列Aの部品番号に応じて0または1のいずれかを表示するヘルパー列を作成することです。
たとえば、ヘルパー列を列Zに配置したいとします。セルZ2に次の数式を配置できます。
=IF(A2=A1,Z1,1-Z1)
データテーブルの各行の数式を列Zにコピーします。完了すると、列Zには1または0が含まれ、列Aの部品番号が変更された場合にのみ切り替わります。次に、列Zの値を条件付き書式の制御値として使用できます。列Zに1が含まれている場合、セルが緑色になるように、数式を形式で設定するだけです。
条件付き書式を設定して適切に機能させたら、列Zを非表示にして、データテーブルを使用している人の気を散らさないようにすることができます。
何らかの理由でヘルパー列を使用できない場合は、条件付き形式自体で使用できる非常に優れた数式があります。データテーブルが列A(部品番号)で並べ替えられていることを確認してから、列ヘッダーを除くテーブル内のすべてのセルを選択してください。次に、次の式を使用する条件付きフォーマットを定義します。
=MOD(SUMPRODUCT(--(($A$1:INDIRECT(ADDRESS(ROW()-1,1,3,1)) =$A$2:INDIRECT(ADDRESS(ROW(),1,3,1)))=FALSE)),2)
これは、条件付き書式ルールに入力された単一の数式であり、すべて1行であることに注意してください。この数式は、部品番号が列Aにあり、データテーブルがセルA2で始まることを前提としています。
さらに、データテーブルの行を削除した場合は、データテーブルのすべてのセルに条件付き形式を再適用する必要があります。
最後に、フォーマットを適用するために記述できるマクロはいくつもあります。あなたがする必要があるのは、列Aのセルをマクロでステップスルーし、部品番号が変更されているかどうかを判断し、それが見つけたものに基づいて正しいフォーマットを適用することです。次に例を示します:
Sub ShadeRows() Dim ThisOrder As Long Dim PrvOrder As Long Dim LastRow As Long Dim Clr As Integer Dim R As Long LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row ' Enter desired color codes here ' (24 is Lavender, 35 is Light Green) RwColor = Array(24, 35) Clr = 0 ' Used to toggle between the two colors For R = 2 To LastRow ThisOrder = Cells(R, 1).Value PrvOrder = Cells(R - 1, 1).Value If ThisOrder <> PrvOrder Then Clr = 1 - Clr ' Select only the columns that are used Range("A" & R & ":M" & R).Select Selection.Interior.ColorIndex = RwColor(Clr) Next R End Sub
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(10517)は、Microsoft Excel 97、2000、2002、および2003に適用されます。
Excel(Excel 2007以降)のリボンインターフェイスに関するこのヒントのバージョンは、次の場所にあります: