お世話になっております。
件名の通りなのですが
excelのシート同士を比べたいのですがそのような関数は無いのでしょうか?
グーグルさんで調べてもEXACT関数ぐらいしか無く
エクセル EXACT関数の使い方|2つのセルの値の一致を判定する方法 - 病院SEにゃんとのパソコン・エクセル活用術
には
セルA3クリック後、数式バーに「=EXACT(」
で範囲指定するとの事なのですが
シート毎全部を比較したいのです……
そのようなAシートとBシートの値が全部正解かどうか判断するVBAの命令は無いのでしょうか?
大変初心者の質問失礼しますが上記何かご存知な方はコメント頂ければ幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
EXACTをここで知って試行錯誤してると閃きました。
VBA
1Public Function MyEXACT(rSheet1 As Worksheet, rSheet2 As Worksheet) As Boolean 2 Dim tR1 As Long 3 Dim tR2 As Long 4 Dim tC1 As Long 5 Dim tC2 As Long 6 'Dim tAddress As String 7 Dim tAddress1 As String 8 Dim tAddress2 As String 9 10 ' rSheet1のUsedRangeとrSheet2のUsedRangeの両方を含む範囲を求める 11 tR1 = WorksheetFunction.Min(rSheet1.UsedRange.Row, rSheet2.UsedRange.Row) 12 tR2 = WorksheetFunction.Max(rSheet1.UsedRange.Row + rSheet1.UsedRange.Rows.Count - 1, rSheet2.UsedRange.Row + rSheet2.UsedRange.Rows.Count - 1) 13 tC1 = WorksheetFunction.Min(rSheet1.UsedRange.Column, rSheet2.UsedRange.Column) 14 tC2 = WorksheetFunction.Max(rSheet1.UsedRange.Column + rSheet1.UsedRange.Columns.Count - 1, rSheet2.UsedRange.Column + rSheet2.UsedRange.Columns.Count - 1) 15 16 'tAddress = rSheet1.Range(rSheet1.Cells(tR1, tC1), rSheet1.Cells(tR2, tC2)).Address 17 'MyEXACT = Evaluate("AND(EXACT([" & rSheet1.Parent.Name & "]" & rSheet1.Name & "!" & tAddress & ",[" & rSheet2.Parent.Name & "]" & rSheet2.Name & "!" & tAddress & "))") 18 ' 範囲のアドレスを取得 19 tAddress1 = rSheet1.Range(rSheet1.Cells(tR1, tC1), rSheet1.Cells(tR2, tC2)).Address(External:=True) 20 tAddress2 = rSheet2.Range(rSheet2.Cells(tR1, tC1), rSheet2.Cells(tR2, tC2)).Address(External:=True) 21 22 ' EXACT実行 23 MyEXACT = Evaluate("AND(EXACT(" & tAddress1 & "," & tAddress2 & "))") 24End Function 25
※コメント追記とアドレスの取得処理変更
投稿2021/03/15 03:20
編集2021/03/15 14:14総合スコア1508
0
こちらはどうでしょう。
VBAで2つの表の違いを調べる
投稿2021/03/15 01:14
総合スコア1925
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/15 01:36
2021/03/15 01:53
0
Youtubeに、下記タイトルの動画があります参考までにURL記載します
「超簡単 2つのExcelシートの差分を比較する3つの方法」
https://www.youtube.com/watch?v=XC3t-Gh4mkg
投稿2021/03/13 09:20
総合スコア312
0
範囲指定でシート全体を選択するには、見出しエリアの左隅(Aの横、1の上)をクリックするか、CTRL+A を押下します。
=EXACT(Asheet!1:1048576,Bsheet!1:1048576)
VBAで一から書くならこんな感じ?
VBA
1Function SheetCompare(ws1 As Worksheet, ws2 As Worksheet) As Boolean 2 3 Dim rng1 As Range, rng2 As Range 4 Set rng1 = ws1.UsedRange 5 Set rng2 = ws2.UsedRange 6 7 If rng1.Address <> rng2.Address Then Exit Function 8 9 If rng1.Count = 1 Then 10 If rng1.Value <> rng2.Value Then Exit Function 11 End If 12 13 Dim arr1, arr2, r, c 14 arr1 = rng1.Value 15 arr2 = rng2.Value 16 For r = 1 To rng1.Rows.Count 17 For c = 1 To rng1.Columns.Count 18 If arr1(r, c) <> arr2(r, c) Then Exit Function 19 Next c, r 20 21 SheetCompare = True 22 23End Function
投稿2021/03/12 09:20
編集2021/03/12 10:05総合スコア4592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/12 09:26
2021/03/12 09:37
2021/03/12 10:11
2021/03/15 01:01
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/15 03:47
2021/03/15 03:52 編集
2021/03/15 08:35
2021/03/15 14:19
2021/03/16 08:28