Excel - 差が2以上の場合はマクロを強調表示
- 問題
- 溶液
- 注意
問題
私が取り組んでいる経理エクセルマクロを書くのに助けが必要です。 助けが必要な部分を除いて、すべてがうまく機能しているようです。
2つのワークシートが同じフォーマットになっていますが、情報の一部がワークシート1からワークシート2に変更されています。マクロ "J"、 "M"、 "P"、 "S"をチェックするように設定します。各セルの「V」と「Y」。 これが私が必要とする例です。
- (Worksheet1!M24-Worksheet2!M24)が20より大きい、または-20未満の場合は、セルの背景を変更します。Worksheet1!M24ラベンダー
- 計算式をチェックとして実行する必要があり、どちらのワークシートのデータも上書きしないでください。
つまり、ワークシート1のM24が200.00、M24ワークシート2が275.00の場合、ワークシート1のM24は依然として200.00と表示されますが、ラベンダーが強調表示されます。
どのように私はこれを行うことができますどのようなアイデア? 私はVBAでマクロを作成していますが、これまでの経験はほとんどありません。
溶液
列j、M、Nなどを選択して、そのcol j + 3がMで、col M + 3がPなどであれば問題ありません。
実際のデータは2行目から始まり、1行目は列見出しです
少なくともJ列にはデータにギャップはありません。
しかしあなたは2枚のシートのセル間の差が20以上または20未満である場合、それは着色されるべきであると書いています。 それが20である場合に限り、それは着色されていません。 この論理は大丈夫です。 再度確認してください
これらの仮定の下、マクロは以下の通りです。 それをテストしてコメントを投稿してください。
バグやエラーがある場合は、エラーを明確に説明する必要があります。 マクロが停止した行とエラーメッセージを停止した場合。
2番目のマクロundoは色付けを削除します。 私は色番号を赤のr 3として使いました。 あなたがラベンダーを主張するならば、私はあなたがラベンダーによって意味するものを誤解するかもしれないので、あなたは色の数を調べる必要があります。 空のセル内
ラベンダーでセルを着色します。 セルがE13であると仮定してから、vbエディタの即時ウィンドウに移動して次のように入力します。
?range( "e13")。interior.colorindex
そしてこの行の終わりにカーソルを置いたままEnterキーを押すと色番号がわかります。 マクロでそれを使用してください。
2つのマクロは以下のとおりです。
Sub test()整数としてcol1、整数としてcol2、整数としてcol、整数としてrrow整数としてcol1 = Range( "J1")列col2 = Range( "Y1")列lastrow =ワークシート( "sheet1" ")。Range(" J2 ")。End(xlDown).Row 'MsgBox lastrowワークシート(" sheet1 ")Cells.Interior.ColorIndex = xlNone col = col1の場合col2へステップ3 rrow = 2の場合lastrow' MsgBoxのセルへ(1、col).Address 'MsgBox rrowワークシート( "sheet1")セル(rrow、col) - ワークシート( "sheet2")セル(rrow、col)> 20または_ワークシート( "sheet2")セル(rrow、col) - ワークシート( "sheet2")。Cells(rrow、col)<20その後Worksheets( "sheet1")。Cells(rrow、col).Interior.ColorIndex = 3次の場合は次へ
Sub undo()ワークシート( "sheet1")Cells.Interior.ColorIndex = xlNone End Sub
注意
フォーラムでこのヒントを提供してくれたvenkat1926に感謝します。