![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
先日、完全に一致するものを削除する。http://oshiete.goo.ne.jp/qa/6462240.htmlにて教えていただいたことを応用して、別のVBAを作ることにしましたが、今回は必ずしもID(A列)が二つ存在するわけではないため、上下のIDを比較して違った場合は1列色づけし、比較は飛ばして次に進む、というVBAを入れたいのですが、上下同じIDを1列色づけしたり、ひとつしかないIDが続くと止まったりしてしまいます。
間違いもしくは、違う考え方など教えてください。
With Worksheets("差分")
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
For j = 2 To 37
If Cells(i, 1).Value <> Cells(i + 1, 1) Then
.Cells(i, 1).Interior.ColorIndex = 36
End If
If Cells(i * 2, j).Value <> Cells(i * 2 + 1, j) Then
.Cells(i * 2, j).Interior.ColorIndex = 44
.Cells(i * 2 + 1, j).Interior.ColorIndex = 6
.Cells(i * 2, 41).Value = "*"
.Cells(i * 2 + 1, 41).Value = "*"
Else
.Cells(i * 2, 40).Value = "重複"
.Cells(i * 2 + 1, 40).Value = "重複"
End If
Next
Next
End With
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
問題のコードの意味の解析はやってないので回答ではないが
(実例データを挙げて、その上でデータがこうだから、こうしたいという例を載せて質問文章も添えて質問すること。何をやっているのか読者に判りにくい。質問者はこのことで頭がいっぱいでもね。他人は初めての問題。)
1つ気のついたことは
Cells()の行を表す引数のほうで、i * 2を書いているが、For i=2 to ・・で
終わり値を適当(と言うかすべて)にして、Step 2 した書き方の方が判りやすい(可読性が増す)と思う。今後の参考に。
この回答への補足
そうですよね、ご指摘ありがとうございます。
データは、2種類あり、前回シートと今回シートで変更された分を抽出するためのVBAを作っています。
両データとも1行目にタイトル、2行目からデータとなり、A列にID番号が記載されています。
比較するため、3枚目のシート「差分」に前回、今回のデータをコピペし、2列ごとに上下を比較して変更があった場合は色づけと、データの後ろに重複か否か(*)を記載するようにします。
基本的にはID番号は、2つずつあるはずなのですが、前回or今回のどちらかにしか存在しないデータがあり、これが不具合の原因のようで、5行ほどIDがひとつしかない状況が続いたところで、デバッグが発生してしまいます。
エラーは7行目 If Cells(i * 2, j).Value <> Cells(i * 2 + 1, j) Then が表示されます。
そこで、とりあえず
1、ID2行を比べて、違ったら1列色づけして次の行へ。
2、同じIDだったら、B列以降を比較、変更分を色づけ(マークをつける)
という操作をしたいです。
ご指摘の部分、修正しました。確かに、、と思いましたw
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「言う通り」と「言った通り」...
-
サクラエディタは複数行に渡る...
-
chrome起動したら「uBlock Orig...
-
問題文で「傍線部ⓐⓑⓒⓓⓔの主語を...
-
【VBA】特定の範囲で同じ値を含...
-
重複しないグループ分けをエク...
-
「仰せの通り」は「仰る通り」...
-
異なる色の9個の玉を3個ずつ3つ...
-
「**者のかた」って言いますか?
-
言葉の重複をチェックするツール
-
「○○極まりないことこの上ない...
-
VBAを使用した、複数条件での重...
-
PDFデータ A-2サイズの2つの...
-
予定通り… 想定内通り… 思った...
-
4/1000とは、0.4ですか?
-
±10%や±5%ってどうやって計算す...
-
文化祭で人力のコーヒーカップ...
-
高1です。選択科目の理由って...
-
英検の筆記80~100字だったんで...
-
家庭教師のトライについてです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「言う通り」と「言った通り」...
-
サクラエディタは複数行に渡る...
-
重複しないグループ分けをエク...
-
chrome起動したら「uBlock Orig...
-
100MBとは0.1GBのことですか?
-
「**者のかた」って言いますか?
-
「仰せの通り」は「仰る通り」...
-
【VBA】特定の範囲で同じ値を含...
-
異なる色の9個の玉を3個ずつ3つ...
-
脳内イメージに逆らうと脳ぼん...
-
問題文で「傍線部ⓐⓑⓒⓓⓔの主語を...
-
日曜日 深夜 って土曜と日曜の...
-
VBAを使用した、複数条件での重...
-
斉藤さんって“まとも”な人はと...
-
PDFデータ A-2サイズの2つの...
-
「過信し過ぎ」はtoo muchの意...
-
10個の数字を5個の組み合わ...
-
重複しない乱数表を作る関数に...
-
アドレスブックのカードの重複...
-
ここの会員IDってとこ分かんな...
おすすめ情報