Excel VBA質問箱 IV

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

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


6897 / 13644 ツリー ←次へ | 前へ→

【42435】基本データと合致・非合致を調べたい Kimiko 06/9/12(火) 6:45 質問[未読]
【42439】Re:基本データと合致・非合致を調べたい ichinose 06/9/12(火) 9:20 発言[未読]
【42461】Re:基本データと合致・非合致を調べたい Kimiko 06/9/12(火) 18:34 お礼[未読]

【42435】基本データと合致・非合致を調べたい
質問  Kimiko  - 06/9/12(火) 6:45 -

引用なし
パスワード
   シート2に「基準データ」があります。
この基準データに合致するか否かをシート1の『チェックデータ』上で
検出したいのですが、どのようにすればよいのでしょうか。
結果として《非合致》と《新規》の表示を出したいのです。
よろしくお願いします。

基準データ(シート2)
  1   2    3        
5  項目  項目2    項目3
6  AAA     101    a
7  AAA     101    aa
8  AAA     101    aaa
9  BBB     102    b
10 BBB     102    bb
11 BBB     102    bbb
12 CCC     103    c
13 CCC     103    cc
14 CCC     103    ccc
15 DDD     104    d
16 DDD     104    dd
17 DDD     104    ddd


チェックデータ(シート1)
 1     2     3     4
項目1    項目2    項目3    非合致(結果)
DDD    104    dd    
BBB    102    k    ×
CCC    103    p    ×
AAA    102    aaa    ×
BBB    102    bb    
CCC    103    cc    
AAA    101    s    ×
DDD    104    dd    
AAA    103    aaa    ×
DDD    104    dd    
HHH    108    hh    新規

【42439】Re:基本データと合致・非合致を調べたい
発言  ichinose  - 06/9/12(火) 9:20 -

引用なし
パスワード
   ▼Kimiko さん:
おはようございます。

>シート2に「基準データ」があります。
>この基準データに合致するか否かをシート1の『チェックデータ』上で
>検出したいのですが、どのようにすればよいのでしょうか。
>結果として《非合致》と《新規》の表示を出したいのです。
>

この基準データが「シート2」というシート名の
セルA5〜C17(1行目は項目名)に記述されているとします。

>基準データ(シート2)
>  1   2    3        
>5  項目  項目2    項目3
>6  AAA     101    a
>7  AAA     101    aa
>8  AAA     101    aaa
>9  BBB     102    b
>10 BBB     102    bb
>11 BBB     102    bbb
>12 CCC     103    c
>13 CCC     103    cc
>14 CCC     103    ccc
>15 DDD     104    d
>16 DDD     104    dd
>17 DDD     104    ddd
>

このチェックデータが「シート1」というシート名の
セルA1〜C12(1行目は項目名)に記述されているとします。

>チェックデータ(シート1)
> 1     2     3     4
>項目1    項目2    項目3    非合致(結果)
>DDD    104    dd    
>BBB    102    k    ×
>CCC    103    p    ×
>AAA    102    aaa    ×
>BBB    102    bb    
>CCC    103    cc    
>AAA    101    s    ×
>DDD    104    dd    
>AAA    103    aaa    ×
>DDD    104    dd    
>HHH    108    hh    新規


標準モジュールに
'==================================================================
Sub main()
  Dim chkdata As Boolean
  Dim chkrng As Range
  Dim cadd(1 To 3) As String
  Dim idx As Long
  Dim rng As Range
  With Worksheets("シート2")
    Set chkrng = .Range("a6", .Cells(.Rows.Count, "a").End(xlUp))
    If chkrng.Row > 5 Then
     For idx = 1 To 3
       cadd(idx) = chkrng.Offset(0, idx - 1).Address(, , , True)
       Next
     chkdata = True
    Else
     chkdata = False
     End If
    End With
  With Worksheets("シート1")
    Set rng = .Range("a2", .Cells(.Rows.Count, "a").End(xlUp))
    End With
  If rng.Row > 1 Then
    With rng.Offset(0, 3)
     If chkdata = False Then
       .Value = "新規"
     Else
       .Formula = "=IF(COUNTIF(" & cadd(1) & ",A2)>0,IF(SUMPRODUCT((" & _
             cadd(1) & "=A2)*(" & cadd(2) & _
             "=B2)*(" & cadd(3) & "=C2))>0,"""",""×""),""新規"")"
       .Value = .Value
       End If
     End With
    End If
End Sub

として、mainを実行してみてください

【42461】Re:基本データと合致・非合致を調べたい
お礼  Kimiko  - 06/9/12(火) 18:34 -

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

こんばんは・・・
大変ありがとうございました。
貴重な時間を割いていただき感謝いたします。

希望していた通りの結果が出ました。
これから、じっくりと「コードの理解」をさせていただきます。
その上で、このまま仕事に活かさせていただきます。

感謝感激です。これからもよろしくお願い申し上げます。

貴重な時間をありがとうございました。

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