Excel VBA質問箱 IV

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

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


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

【37964】重複を調べる koshimizu 06/5/24(水) 12:28 質問[未読]
【37971】Re:重複を調べる Statis 06/5/24(水) 13:06 発言[未読]
【37974】Re:重複を調べる koshimizu 06/5/24(水) 13:50 質問[未読]
【37976】Re:重複を調べる Statis 06/5/24(水) 14:02 回答[未読]
【37977】Re:重複を調べる koshimizu 06/5/24(水) 14:31 お礼[未読]
【37995】Re:重複を調べる ichinose 06/5/24(水) 19:34 発言[未読]
【38037】Re:重複を調べる koshimizu 06/5/25(木) 13:13 お礼[未読]

【37964】重複を調べる
質問  koshimizu E-MAIL  - 06/5/24(水) 12:28 -

引用なし
パスワード
   皆様 こんにちは。
お世話になっています。

A列からT列までセルに氏名が入っています。
行は50行ほどです。
行単位で、A列からT列までに重複がないかV列に表示したい。
重複していたら重複している氏名を表示、重複がなければ(なし)としたい。
A列からT列まで空白セルがある場合があります。
宜しくお願いします。

【37971】Re:重複を調べる
発言  Statis  - 06/5/24(水) 13:06 -

引用なし
パスワード
   こんにちは
例えばA1とD1のセルの値がが同じで、次にB1とF1のセルの値も同じ場合は
どうなりますか?

【37974】Re:重複を調べる
質問  koshimizu E-MAIL  - 06/5/24(水) 13:50 -

引用なし
パスワード
   Statis さん

ありがとうございます。

説明不足ですみません。

>例えばA1とD1のセルの値がが同じで、次にB1とF1のセルの値も同じ場合は
>どうなりますか?
A1とD1のセルの値がが同じで、次にB1とF1のセルの値も同じ場合は
最初にヒットしたものを表示出きれば良いと思っています。そこを変更した後
もう一度マクロを走らせるつもりです。

【37976】Re:重複を調べる
回答  Statis  - 06/5/24(水) 14:02 -

引用なし
パスワード
   こんにちは

「Test」は2個以上あった場合はV列W列と表示するようにしました
「Test1」は1個のみ表示です。

Sub Test()
Dim i As Long, ii As Long, Coun As Long, Co As Long
Dim Ch As Boolean, Ma As Variant, Da As Variant

With Worksheets("Sheet1")
   Da = Range("A1", Range("A65536").End(xlUp)).Resize(, 20).Value
   For i = 1 To UBound(Da)
     Ch = True: Co = 22
     For ii = 1 To 20
       If Not IsEmpty(Da(i, ii)) Then
        Coun = Application.CountIf(.Cells(i, 1).Resize(, 20), Da(i, ii))
        If Coun > 1 Then
          Ch = False
          Ma = Application.Match(Da(i, ii), .Cells(i, 22).Resize(, Co - 21), 0)
          If IsError(Ma) Then
           .Cells(i, Co).Value = Da(i, ii)
           Co = Co + 1
          End If
        End If
       End If
     Next ii
     If Ch Then
      .Cells(i, Co).Value = "なし"
     End If
   Next i
End With

End Sub


Sub Test_1()
Dim i As Long, ii As Long, Coun As Long
Dim Ch As Boolean, Da As Variant

With Worksheets("Sheet1")
   Da = Range("A1", Range("A65536").End(xlUp)).Resize(, 20).Value
   For i = 1 To UBound(Da)
     Ch = True
     For ii = 1 To 20
       If Not IsEmpty(Da(i, ii)) Then
        Coun = Application.CountIf(.Cells(i, 1).Resize(, 20), Da(i, ii))
        If Coun > 1 Then
          Ch = False
          .Cells(i, 22).Value = Da(i, ii)
          Exit For
        End If
       End If
     Next ii
     If Ch Then
      .Cells(i, 22).Value = "なし"
     End If
   Next i
End With

End Sub

【37977】Re:重複を調べる
お礼  koshimizu E-MAIL  - 06/5/24(水) 14:31 -

引用なし
パスワード
   Statis さん

早速の回答ありがとうございます。
2個以上あった場合まで作成していただきありがとうございます。

空白のセルがあっても作動しています。すばらしいです。
列単位であれば数式で行えるのに行単位は出来ず困っていました。
今後とも宜しくお願いいたします。

【37995】Re:重複を調べる
発言  ichinose  - 06/5/24(水) 19:34 -

引用なし
パスワード
   こんばんは。

>列単位であれば数式で行えるのに行単位は出来ず困っていました。
>今後とも宜しくお願いいたします。

解決後ですが、数式で行う方法です。

50行ぐらいなら、以下の方法でも大丈夫だと思います。


1行目の結果を出したいセルに

「=IF(MIN(IF(COUNTIF($A1:$T1,$A1:$T1)>1,COLUMN($A1:$T1)))>0,
  INDEX($A1:$T1,1,MIN(IF(COUNTIF($A1:$T1,$A1:$T1)>1,COLUMN($A1:$T1)))),
 "なし")」

と指定してください。
但し、配列数式ですから、セルの確定はEnterキーでなく、
Ctrl+Shift+Enetrキーで確定してください。

後は、50行までフィル操作です。

試してみて下さい。

【38037】Re:重複を調べる
お礼  koshimizu E-MAIL  - 06/5/25(木) 13:13 -

引用なし
パスワード
   ichinose さん
こんにちは。
カナ読みでは、ありがとうございました。

また、今回もすばらしい数式をありがとうございます。
数式でも出来るのですね。COLUMNは列番号を返すのですね。
しかし、私には数式を組み立てられません。
今後とも宜しくお願いします。

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