VBAの素人で、基礎が理解できていないレベルです。googleなどで調べて、以下まで出来るようになりましたが、できない部分があり、質問させて頂いています。
以下について、ご教示頂けると大変助かります。
添付のVBAについて、
■やっている事
その① 2つのシートの、同一位置にあるセルの値を比較する。
その② 別シートを作成して、その①の処理で異なる値となったセルの値に、「薄い黄色の網掛け」と「フォントを赤にして」表示する。
■やりたいけど、できない事
上述のその②ですが、別シートのセルに出力されている「値」は、現状では「比較したいシート(1枚目)の「値」」が設定されていますが、
そうではなくて、「比較したいシート(1枚目)の値」と「比較したいシート(2枚目)の値」との差額を設定したいのです。
なお、セルの値が、数値ではなくて、文字列であった場合は、エラー値を出し、数値が入っているセルのみを、その差額を出したいです。
◆◆◆
Sub シート比較()
Dim SN1 As String, SN2 As String, 比較結果 As String, buf As Range, TCell As Range
'Step1:比較したいシート(1枚目)の比較したい範囲を選択
Set buf = Application.InputBox(prompt:="比較したいシート(1枚目)の「範囲」を選択してください)", Type:=8)
SN1 = buf.Parent.Name
'Step2:比較したいシート(2枚目)の名前を入力。デフォルト値は2枚目のシート
SN2 = InputBox("比較したいシート(2枚目)の「シート名」を入力してください", "", Sheets(2).Name)
'Step3:突合結果の追加
Worksheets(SN1).Copy Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "比較結果"
'Step4:指定した各セル内容を比較していき、結果シートに記入する。
For Each TCell In buf
'結果シートの対応するセルに比較シート1の値を記入していく
Sheets("比較結果").Range(TCell.Address).Formula = TCell.Formula
'比較シート1と2の値を比較し異なる場合には、結果シートの対応するセルを色をつけていく。同一であれば色はつけない。
If TCell.Value <> Sheets(SN2).Range(TCell.Address).Value Then
Sheets("比較結果").Range(TCell.Address).Interior.Color = RGB(255, 255, 153)
Sheets("比較結果").Range(TCell.Address).Font.Color = RGB(255, 0, 0)
Sheets("比較結果").Range(TCell.Address).Font.Name = "Meiryo UI"
Sheets("比較結果").Range(TCell.Address).Font.Size = 9
Else
Sheets("比較結果").Range(TCell.Address).Interior.Color = RGB(255, 255, 255)
Sheets("比較結果").Range(TCell.Address).Font.Color = RGB(0, 0, 0)
Sheets("比較結果").Range(TCell.Address).Font.Name = "Meiryo UI"
Sheets("比較結果").Range(TCell.Address).Font.Size = 9
End If
Next
End Sub
◆◆◆
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
Sub シート比較()
Dim SN1 As String, SN2 As String, 比較結果 As String, buf As Range, TCell As Range
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "比較結果" Then
Sheets("比較結果").Select
ActiveWindow.SelectedSheets.Delete
Exit For
End If
Next i
Sheets("Sheet1").Select
'Step1:比較したいシート(1枚目)の比較したい範囲を選択
Set buf = Application.InputBox(prompt:="比較したいシート(1枚目)の「範囲」を選択してください)", Type:=8)
SN1 = buf.Parent.Name
'Step2:比較したいシート(2枚目)の名前を入力。デフォルト値は2枚目のシート
SN2 = InputBox("比較したいシート(2枚目)の「シート名」を入力してください", "", Sheets(2).Name)
'Step3:突合結果の追加
Worksheets(SN1).Copy Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "比較結果"
'Step4:指定した各セル内容を比較していき、結果シートに記入する。
For Each TCell In buf
'結果シートの対応するセルに比較シート1の値を記入していく
Sheets("比較結果").Range(TCell.Address).Formula = TCell.Formula
'比較シート1と2の値を比較し異なる場合には、結果シートの対応するセルを色をつけていく。同一であれば色はつけない。
If VarType(Range(TCell.Address).Value) = vbString Then
Range(TCell.Address) = "1枚目文字列!"
ElseIf VarType(Sheets(SN2).Range(TCell.Address).Value) = vbString Then
Range(TCell.Address) = "2枚目文字列!"
ElseIf TCell.Value <> Sheets(SN2).Range(TCell.Address).Value Then
Sheets("比較結果").Range(TCell.Address).Interior.Color = RGB(255, 255, 153)
Sheets("比較結果").Range(TCell.Address).Font.Color = RGB(255, 0, 0)
Sheets("比較結果").Range(TCell.Address).Font.Name = "Meiryo UI"
Sheets("比較結果").Range(TCell.Address).Font.Size = 9
Sheets("比較結果").Range(TCell.Address) = Range(TCell.Address).Formula - Sheets(SN2).Range(TCell.Address).Value
ElseIf TCell.Value = Sheets(SN2).Range(TCell.Address).Value Then
Sheets("比較結果").Range(TCell.Address).Interior.Color = RGB(255, 255, 255)
Sheets("比較結果").Range(TCell.Address).Font.Color = RGB(0, 0, 0)
Sheets("比較結果").Range(TCell.Address).Font.Name = "Meiryo UI"
Sheets("比較結果").Range(TCell.Address).Font.Size = 9
Sheets("比較結果").Range(TCell.Address) = Range(TCell.Address).Formula - Sheets(SN2).Range(TCell.Address).Value
End If
Next
End Sub
こんなんしてみました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
尿検査の前日は自慰控えたほう...
-
精子が黄色?
-
中出しをするとお腹が痛い・・・。
-
EXCELで条件付き書式で空白セル...
-
excelでsin二乗のやり方を教え...
-
これって喉仏ですか? 私は女性...
-
口の中に黒い血の塊
-
納豆食べた後の尿の納豆臭は何故?
-
2つの数値のうち、数値が小さい...
-
エクセル指定した範囲からラン...
-
筋トレするとチンコが縮んじゃ...
-
変な話しになります。尿検査で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報