• ベストアンサー

比較元と先の数字がルールに合えば塗潰して出力する2

このカテゴリーのエクセルの達人の方々に質問です。 どなたか回答して頂ける方がおみえでしたらよろしくお願いします。 (ちゃんとした回答ではなく、文句やクレーム等を混ぜた記載はご  遠慮ください。私の質問が気に入らない場合は無視して頂ければ  結構です。) 【質問】  添付図のとおり、①比較元と➁比較先で同じ位置にあるセルの数字が  以下のルールに合えばお互いのセルを指定の色で塗潰し、  ➁比較先の数字の下(18行目~)に➁比較先側の数字を縦に並べる方法が  知りたいです。   ◎ルール    1)①比較元の数字と➁比較先の数字が一致する場合は       両方のセルを黄色に塗り潰す。    2)①比較元の数字に+1にした数字が➁比較先の数字と       一致する場合は両方のセルを青色に塗り潰す。    3)①比較元の数字にー1した数字が➁比較先の数字と       一致する場合は両方のセルを青色に塗り潰す。    4)①比較元の数字に×2した数字が➁比較先の数字と       一致する場合は両方のセルを橙色に塗り潰す。    5)①比較元の数字に÷2した数字が➁比較先の数字と       一致する場合は両方のセルを橙色に塗り潰す。    6)①比較元の数字に+10した数字が➁比較先の数字と       一致する場合は両方のセルを赤色に塗り潰す。    7)①比較元の数字にー10した数字が➁比較先の数字と       一致する場合は両方のセルを赤色に塗り潰す。    8)①比較元の数字に+5した数字が➁比較先の数字と       一致する場合は両方のセルを緑色に塗り潰す。    9)①比較元の数字にー5した数字が➁比較先の数字と       一致する場合は両方のセルを緑色に塗り潰す。 【注意事項】  ・「①比較元」、「➁比較先」は5セル×5セルで4つあります。  ・「③結果表示」も「➁比較先」の下にそれぞれあります。  ・「①比較元」、「➁比較先」に入る数字は重複ありで、   空白はありません。  ・「①比較元」、「➁比較先」、「③結果表示」は、    説明のためにつけているだけです。  ・9つあるルールのうち、複数のルールに該当する数字がある   場合、最初に該当するルールの色で塗潰してください。      ・使用するエクセルは2021です。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1746/2622)
回答No.1

前回のコードを一部変更したものです。 Sub Test() Dim mRng As Range Dim i As Long Application.ScreenUpdating = False Range("A1:AI13").Interior.Color = xlNone Range("A18:AM230").ClearContents For i = 0 To 30 Step 10 For Each mRng In Range("A1:E5").Offset(0, i) Select Case True Case mRng.Offset(8, 0).Value = mRng.Value Call SetData(mRng, Range("A17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value + 1 Call SetData(mRng, Range("B17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value - 1 Call SetData(mRng, Range("C17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value * 2 Call SetData(mRng, Range("D17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value / 2 Call SetData(mRng, Range("E17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value + 10 Call SetData(mRng, Range("F17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value - 10 Call SetData(mRng, Range("G17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value + 5 Call SetData(mRng, Range("H17").Offset(0, i)) Case mRng.Offset(8, 0).Value = mRng.Value - 5 Call SetData(mRng, Range("I17").Offset(0, i)) Case Else End Select Next Next Application.ScreenUpdating = True End Sub Function SetData(mRng As Range, cRng As Range) Dim LastRow As Long mRng.Interior.Color = cRng.Interior.Color mRng.Offset(8, 0).Interior.Color = cRng.Interior.Color LastRow = Cells(Rows.Count, cRng.Column).End(xlUp).Row Cells(LastRow + 1, cRng.Column).Value = mRng.Offset(8, 0).Value End Function

sazanami0422
質問者

お礼

いつもお世話になっております。 また早速のご回答ありがとうございます。 今回も一部、塗潰しサンプルが誤っていることに気づけました。 またよろしくお願いいたします。

Powered by GRATICA
すると、全ての回答が全文表示されます。

関連するQ&A