dポイントプレゼントキャンペーン実施中!

いつもお世話になっております

下記のコードは隣り合う列の比較をして
相違がなければ背景色をつけます。

ただ、離れた場合

変更前 F列 G列
With .Cells(i).Resize(, 2) '★ここの部分

変更後 F列 H列
With .Cells(i).offset(, 2) '★ここの部分

でよいかなと思い実行しましたが、
実行すると

 F列          H列
佐藤 太郎    佐藤 太郎
内藤 小太郎 タナカ
近藤 小太郎 近藤 小太郎  ←色付く
加藤 太郎    遠藤      ←色付く


本当に欲しい結果は下記です。
 F列          H列
佐藤 太郎    佐藤 太郎   ←色付く
内藤 小太郎 タナカ
近藤 小太郎 近藤 小太郎  ←色付く
加藤 太郎    遠藤      


わかる方おしえてくれませんでしょうか

Sub effa()
Dim i As Long, iC As Long


With Range("F6", Cells(Rows.Count, "F").End(xlUp))
For i = 1 To .Rows.Count
With .Cells(i).Resize(, 2) '★ここの部分
iC = xlNone

If .Cells(1).Text <> .Cells(2).Text Then iC = 8
.Interior.ColorIndex = iC
End With

Next
End With
End Sub

質問者からの補足コメント

  • へこむわー

    画像 添付できなくて ずれてみにくいので

    F列                H列
    佐藤 太郎           佐藤 太郎   ←色付く
    内藤 小太郎          タナカ
    近藤 小太郎          近藤 小太郎  ←色付く
    加藤 太郎           遠藤

      補足日時:2022/02/02 20:02
  • うーん・・・

    どちらでも大丈夫なのですが、
    With Range(.Cells(i), .Cells(i).Offset(, 2))

    With .Cells(i).Resize(, 3) で、良い様な

    真ん中の列には色が反転してしまいます。
    なにとぞご知恵ください。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/02/02 20:27

A 回答 (5件)

まぁ#3さんのが普通に感じますけど。




Sub effa()
Dim i As Long, iC As Long
Dim v

iC = 0

For i = 6 To Cells(Rows.Count, "F").End(xlUp).Row
With Union(Cells(i, "F"), Cells(i, "H"))

v = Split(.Address, ",")

If Range(v(0)).Text = Range(v(1)).Text Then
.Interior.ColorIndex = 8
Else
.Interior.ColorIndex = 0
End If

End With
Next

End Sub
    • good
    • 0
この回答へのお礼

いつもお世話になっております
Union
v = Split(.Address, ",")
いろいろありますね

うまくいきました
ありがとうございます。

前回の質問 うまくいきました。
一日かかってしまいましたが、

お礼日時:2022/02/02 20:46

No.4です。



>, iC As Long
>iC = 0

これいらなかったかな。
    • good
    • 0

こんばんは。



コードをだいぶ変えてしまいましたが、下記の様な感じでしょうか?
手書きなので、エラーが出たら適宜修正をお願いします。

Sub effa()
Dim myRng As Range

For Each myRng in Range("F6", Cells(Rows.Count, "F").End(xlUp))
With myRng
If .Text <> .Offset(,2).Text Then
.Interior.ColorIndex = 8
Else
.Interior.ColorIndex = xlNone
End If
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にいたします

お礼日時:2022/02/02 20:31

ちょっと勘違い


Offsetの場合は With Range(.Cells(i), .Cells(i).Offset(, 2))
ちょっと変かな
With .Cells(i).Resize(, 3) で、良い様な
試せないので・・ごめんなさい。
この回答への補足あり
    • good
    • 0

こんばんは、


流し読みで確認していませんが、比較対象をH列にするのなら
このコードでのセルインデックスは3になります
If .Cells(1).Text <> .Cells(3).Text Then iC = 8

Offsetでも良いですしResize でも良いかと
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2022/02/02 20:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!