Excel VBA質問箱 IV

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

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


6604 / 13646 ツリー ←次へ | 前へ→

【44269】照合のチェック Toni 06/11/11(土) 22:06 質問[未読]
【44271】Re:照合のチェック ponpon 06/11/11(土) 22:23 発言[未読]
【44272】Re:照合のチェック Kein 06/11/11(土) 22:54 回答[未読]
【44273】Re:照合のチェック Toni 06/11/11(土) 23:37 質問[未読]
【44274】Re:照合のチェック Kein 06/11/11(土) 23:45 発言[未読]
【44275】Re:照合のチェック ponpon 06/11/11(土) 23:50 発言[未読]
【44279】Re:照合のチェック Kein 06/11/12(日) 0:18 発言[未読]
【44284】Re:照合のチェック ponpon 06/11/12(日) 0:44 発言[未読]
【44290】Re:照合のチェック Toni 06/11/12(日) 8:58 質問[未読]
【44300】Re:照合のチェック Kein 06/11/12(日) 15:52 回答[未読]
【44303】Re:照合のチェック Toni 06/11/12(日) 19:21 質問[未読]
【44304】Re:照合のチェック Toni 06/11/12(日) 19:23 お礼[未読]

【44269】照合のチェック
質問  Toni  - 06/11/11(土) 22:06 -

引用なし
パスワード
   A列とB列には基本データがあります。
入稿されてきたデータがC列にあります。
入稿されたデータが基本データと同じ数字が
ある場合と否を、D列に判定を「○・×」でしたく思います。

このような照合のチェックをする場合の方法をアドバイスお願い
します。
   A   B   C       D
   (基本データ) (被チェックデータ) チェック結果
1   11   21   11       ○
2  12   22   25       × 
3  13   23   20       ×
4  14   24   24       ○
5  15   25   15       ○




【44271】Re:照合のチェック
発言  ponpon  - 06/11/11(土) 22:23 -

引用なし
パスワード
   ▼Toni さん:
>A列とB列には基本データがあります。
>入稿されてきたデータがC列にあります。
>入稿されたデータが基本データと同じ数字が
>ある場合と否を、D列に判定を「○・×」でしたく思います。
>
>このような照合のチェックをする場合の方法をアドバイスお願い
>します。
>   A   B   C       D
>   (基本データ) (被チェックデータ) チェック結果
>1   11   21   11       ○
>2  12   22   25       × 
>3  13   23   20       ×
>4  14   24   24       ○
>5  15   25   15       ○
>6
>7
>8

こんばんは。
項目行はなく、1行目からデータがあると考えています。
こんな感じになると思います。
Sub test()
  Dim myR As Range, r As Range
  
  Set myR = Range(Cells(1, "C"), Cells(Rows.Count, "C").End(xlUp))
  For Each r In myR
    If r.Value = r.Offset(, -1) Or r.Value = r.Offset(, -2).Value Then
      r.Offset(, 1).Value = "○"
    Else
      r.Offset(, 1).Value = "×"
    End If
  Next
End Sub

【44272】Re:照合のチェック
回答  Kein  - 06/11/11(土) 22:54 -

引用なし
パスワード
   単純な数式を手入力するだけで出来ますが、あえてマクロを組むなら

Sub Data_Check()
  With Range("C1", Range("C65536").End(xlUp)).Offset(, 1)
   .Formula = "=IF(OR($A1=$C1,$B1=$C1),""○"",""×"")"
   .Value = .Value
  End With
End Sub

というコードで同様の処理が出来ます。

【44273】Re:照合のチェック
質問  Toni  - 06/11/11(土) 23:37 -

引用なし
パスワード
   ▼ponpon さん Kein さん:
ありがとうございます。
サンプルの作り方が悪かったのですが・・・
A列とB列の数字がC列に存在すると"○"、存在しない場合は"×"に
したいのですが・・・
行の横並びの照合ではないチェックをしたいのですが
ですからC列の25は"○"にしたいのです→B列に25があるからです
よろしくご指導お願いします。

   A   B   C       D
   (基本データ) (被チェックデータ) チェック結果
1   11   21   11       ○
2  12   22   25       × 
3  13   23   20       ×
4  14   24   25       ○
5  15   25   15       ○




【44274】Re:照合のチェック
発言  Kein  - 06/11/11(土) 23:45 -

引用なし
パスワード
   つまり「A列またはB列のいずれかにC列の値があれば○、両方に無ければ×」という
ことですよね ? 私のコードはそのように処理できるはずですが。

【44275】Re:照合のチェック
発言  ponpon  - 06/11/11(土) 23:50 -

引用なし
パスワード
   ▼Toni さん:
>A列とB列の数字がC列に存在すると"○"、存在しない場合は"×"に
>したいのですが・・・

なら、数式でD1に=IF(COUNTIF($A$1:$B$18,$C1)>0,"○","×")
                ↑データ範囲 そちらにあわせてください。
として必要なだけフィルでは?

【44279】Re:照合のチェック
発言  Kein  - 06/11/12(日) 0:18 -

引用なし
パスワード
   んー・・何か意図していることと提示されている表が矛盾している
ように思えてなりませんね・・。「A列の値もしくはB列の値がC列に存在したら○、
どちらも存在しなければ×」ということですか ? そーすると例えば

Sub Data_Check()
  With Range("C1", Range("C65536").End(xlUp)).Offset(, 1)
   .Formula = _
   "=IF(AND(ISNA(MATCH($A1,$C:$C,0)),ISNA(MATCH($B1,$C:$C,0))),""×"",""○"")"
   .Value = .Value
  End With
End Sub

というような式で出来るはずですが、この結果は4行目(A4=14,B4=24)では
あきらかに×になりますけど・・。

【44284】Re:照合のチェック
発言  ponpon  - 06/11/12(日) 0:44 -

引用なし
パスワード
   ▼Toni さん:
>   A   B   C       D
>   (基本データ) (被チェックデータ) チェック結果
>1   11   21   11       ○
>2  12   22   25       × 
>3  13   23   20       ×
>4  14   24   25       ○
>5  15   25   15       ○

今よく見てみると、2行目は25で×ですが、4行目は○ですね?
判定基準がよくわからなくなりました。
もう一度正しい判定基準を文字と、表で提示できないでしょうか?

【44290】Re:照合のチェック
質問  Toni  - 06/11/12(日) 8:58 -

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

ありがとうございます。

D1に=IF(COUNTIF($A$1:$B$18,$C1)>0,"○","×")のシート関数で正しい
判定が出来ています。

失礼しました
サンプルの作り方が間違っていました・・・
つまり「A列またはB列のいずれかにC列の値があれば○、両方に無ければ×」ということです。Kein さんのご指摘の通りです。
この状態をコードに反映させたいのですが・・・

   A   B   C       D
   (基本データ) (被チェックデータ) チェック結果
1   11   21   11       ○
2  12   22   25       ○
3  13   23   20       ×
4  14   24   25       ○
5  15   25   15       ○
6
7
8

【44300】Re:照合のチェック
回答  Kein  - 06/11/12(日) 15:52 -

引用なし
パスワード
   それなら、このようなコードになると思います。

Sub Data_Check()
  Dim LRw As Long

  LRw = Range("C65536").End(xlUp).Row
  With Range("C1:C" & LRw).Offset(, 1)
   .Formula = _
   "=IF(COUNTIF($A$1:$B$" & LRw & ",$C1)>0,""○"",""×"")"
   .Value = .Value
  End With
End Sub

【44303】Re:照合のチェック
質問  Toni  - 06/11/12(日) 19:21 -

引用なし
パスワード
   ▼Kein さん
ありがとうございました。理解できました。
途中何かとご迷惑をおかけしました。
それから、ponponさんありがとうございました。

【44304】Re:照合のチェック
お礼  Toni  - 06/11/12(日) 19:23 -

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

ありがとうございました。理解できました。
途中何かとご迷惑をおかけしました。
それから、ponponさんありがとうございました。

これからもよろしくお願いします

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