Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9767 / 76734 ←次へ | 前へ→

【72525】Re:明細の再確認
発言  UO3  - 12/8/19(日) 17:34 -

引用なし
パスワード
   ▼杏子 さん:

ということで、とりあえず。
でも、杏子さんの意図は、ほんとにそうなのかなぁ?? と。

Sub Sample2()
  Dim dicA As Object
  Dim dicB As Object
  Dim dicAonly As Object
  Dim dicBonly As Object
  Dim dicComp As Object
  Dim d As Variant
  Dim colA(1 To 5) As Variant
  Dim colB(1 To 5) As Variant
  Dim shA As Worksheet
  Dim shB As Worksheet
  Dim c As Range
  
  
  Set dicA = CreateObject("Scripting.Dictionary")
  Set dicB = CreateObject("Scripting.Dictionary")
  Set dicAonly = CreateObject("Scripting.Dictionary")
  Set dicBonly = CreateObject("Scripting.Dictionary")
  Set dicComp = CreateObject("Scripting.Dictionary")
  
  Set shA = Sheets("Sheet1")
  Set shB = Sheets("Sheet2")
  
  If Not GetCol(shA, colA) Then Exit Sub
  If Not GetCol(shB, colB) Then Exit Sub
  
  CreateDic shA, dicA, colA
  CreateDic shB, dicB, colB
  
  OnlyCheck dicA, dicB, dicAonly
  OnlyCheck dicB, dicA, dicBonly
  
  If dicAonly.Count = 0 Then
    MsgBox "資料(A)にある内容はすべて資料(B)と同じでした"
  Else
    MsgBox "資料(A)のうち、以下が資料(B)にありません" & vbLf & Join(dicAonly.keys, vbLf)
  End If
  
  If dicBonly.Count = 0 Then
    MsgBox "資料(B)にある内容はすべて資料(A)と同じでした"
  Else
    MsgBox "資料(B)のうち、以下が資料(A)にありません" & vbLf & Join(dicBonly.keys, vbLf)
  End If
 
  
End Sub

Private Function GetCol(sh As Worksheet, v As Variant) As Boolean
  Dim x As Long
  Dim ck As String
  Dim z As Variant
  For x = 1 To 5
    ck = Array("型名", "数量", "金額", "納期", "納地")(x - 1)
    z = Application.Match(ck, sh.Rows(1), 0)
    If IsError(z) Then
      MsgBox sh.Name & "のタイトル行に" & ck & "がないので処理を終了します"
      Exit Function
    End If
    v(x) = z
  Next
  GetCol = True
End Function

Private Sub CreateDic(sh As Worksheet, dic As Object, v As Variant)
  Dim c As Range
  Dim dKey As String
  For Each c In sh.Range("A2", sh.Range("A" & sh.Rows.Count).End(xlUp))
    dKey = c.Offset(, v(1) - 1).Value & "/" & _
        c.Offset(, v(2) - 1).Value & "/" & _
        c.Offset(, v(3) - 1).Value & "/" & _
        c.Offset(, v(4) - 1).Value & "/" & _
        c.Offset(, v(5) - 1).Value
    dic(dKey) = True
  Next
End Sub

Private Sub OnlyCheck(dic1 As Object, dic2 As Object, dicOnly As Object)
  Dim d As Variant
  For Each d In dic1
    If Not dic2.exists(d) Then dicOnly(d) = True
  Next
End Sub
1 hits

【72509】明細の再確認 杏子 12/8/18(土) 9:20 質問
【72511】Re:明細の再確認 UO3 12/8/18(土) 11:12 発言
【72512】Re:明細の再確認 杏子 12/8/18(土) 15:31 質問
【72515】Re:明細の再確認 UO3 12/8/18(土) 20:54 発言
【72516】Re:明細の再確認 杏子 12/8/19(日) 13:12 発言
【72517】Re:明細の再確認 UO3 12/8/19(日) 14:41 発言
【72518】Re:明細の再確認 杏子 12/8/19(日) 15:02 発言
【72520】Re:明細の再確認 UO3 12/8/19(日) 16:15 発言
【72521】Re:明細の再確認 杏子 12/8/19(日) 16:27 発言
【72523】Re:明細の再確認 UO3 12/8/19(日) 17:25 発言
【72524】Re:明細の再確認 杏子 12/8/19(日) 17:32 発言
【72525】Re:明細の再確認 UO3 12/8/19(日) 17:34 発言
【72527】Re:明細の再確認 杏子 12/8/19(日) 18:58 発言
【72528】Re:明細の再確認 UO3 12/8/19(日) 19:17 発言
【72529】Re:明細の再確認 杏子 12/8/19(日) 19:30 発言
【72533】Re:明細の再確認 杏子 12/8/20(月) 9:32 発言
【72536】Re:明細の再確認 UO3 12/8/20(月) 12:18 発言
【72537】Re:明細の再確認 杏子 12/8/21(火) 6:23 質問
【72538】Re:明細の再確認 杏子 12/8/21(火) 10:37 質問
【72539】Re:明細の再確認 UO3 12/8/21(火) 11:49 発言
【72540】Re:明細の再確認 杏子 12/8/21(火) 12:14 質問
【72541】Re:明細の再確認 UO3 12/8/21(火) 17:48 発言
【72542】Re:明細の再確認 UO3 12/8/21(火) 20:40 発言
【72543】Re:明細の再確認 杏子 12/8/21(火) 21:14 お礼
【72544】Re:明細の再確認 杏子 12/8/21(火) 22:42 質問
【72546】Re:明細の再確認 UO3 12/8/22(水) 0:50 発言
【72548】Re:明細の再確認 杏子 12/8/22(水) 6:26 質問
【72549】Re:明細の再確認 UO3 12/8/22(水) 13:59 発言
【72551】Re:明細の再確認 杏子 12/8/22(水) 15:19 お礼

9767 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free