Excelについての質問です。

同じシート内でこんな感じの表があるのですが、

_|___A___|_ B _|C |__ D __|_ E _|
1| [品名1] | [色] | - | [品名2] | [色] |
2| [DT-01] | [青] | - | [CT-01] | [赤] |
3| [DT-05] | [白] | - | [CT-02] | [緑] |
4| [DT-21] | [茶] | - | [B-05] | [橙] |
5| [DT-50] | [緑] | - |
6| [DT-60] | [黄] | - | [品名3] | [色] |
7| [DT-61] | [紫] | - | [D-05] | [黒] |
8| [DT-62] | [金] | - | [DT-50] | [紺] |
9| [DT-63] | [銀] | - | [B-05] | [茶] |

品名が重複してるしている物だけ入力したらセルに色が付く
もしくは、何か記しが付くなど・・・
複数の列の品名1〜3が重複している所がわかりやすくなる
方法は無いでしょうか?

Excelは触る程度しか出来ないのですが、
一列だけの重複ならCOUNTIF関数などで調べて出来たのですが
複数のA列、D列、G列の重複は調べてみたのですが、
わからなくて困っています。

さらに、違うシートとも重複してる所がわかると最高です。

*色の重複などは関係ないです。
*実際はもっと列もあります。

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2009/06/24 19:07:56
  • 終了:2009/07/01 07:55:52

回答(3件)

id:jccrh1 No.1

jccrh1回答回数111ベストアンサー獲得回数192009/06/24 19:58:34

ポイント16pt

同一シートの場合の条件書式は以下の通りでできるかと思います。

数式が
=SUM(IF(CONCATENATE(A1,D1,G1)=CONCATENATE($A$1:$A$9,$D$1:$D$9,$G$1:$G$9),1,0))>=2

書式は自分で設定してください。

違うシートとの重複は可能かと思いますが、条件書式で別シートを参照する場合

範囲名で指定する必要があります。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-syo_betusheet.htm...

id:ahiru51

ありがとうございます、

試してみましたが私のやり方が悪いみたいで

イマイチでした(;^_^A アセアセ・・・

2009/06/29 16:27:47
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912009/06/24 20:30:09

ポイント32pt

条件付き書式や COUNTIF の応用でできると思いますが、マクロでの実装例です。


下記のコードのRange の中を実際の範囲に合わせて指定してください。

2つでも比較できますが、3ヵ所指定した倍はそれぞれを(赤、青、黄)に想定して

重複する箇所が混合色(紫、緑、橙:3つは灰)で背景色が塗られます。


Option Explicit

'-------------------------------------------------------------------------------------
Const COLOR_A = 38
Const COLOR_B = 34
Const COLOR_C = 36
Const COLOR_A_B = 39
Const COLOR_B_C = 45
Const COLOR_C_A = 35
Const COLOR_A_B_C = 48

'-------------------------------------------------------------------------------------
Sub main()
'-------------------------------------------------------------------------------------
'--- 3つの比較の例:質問の例
    checkOverlap Range("A1:A9"), Range("D1:D4"), Range("D6:D9")
'--- 2つの比較の例
'    checkOverlap Range("A1:A10"), Range("B1:B10")

End Sub

'-------------------------------------------------------------------------------------
Sub checkOverlap(rng1 As Range, rng2 As Range, Optional rng3 As Range = Nothing)
'-------------------------------------------------------------------------------------
    Union(rng1, rng2, rng3).Interior.ColorIndex = 2
    rng1.Resize(1, 1).Interior.ColorIndex = COLOR_A
    rng2.Resize(1, 1).Interior.ColorIndex = COLOR_B
    
    compRange rng1, rng2, COLOR_A_B
    If Not rng3 Is Nothing Then
        rng3.Resize(1, 1).Interior.ColorIndex = COLOR_C
        compRange rng1, rng3, COLOR_B_C
        compRange rng2, rng3, COLOR_C_A
    End If
End Sub

'-------------------------------------------------------------------------------------
Sub compRange(rng1 As Range, rng2 As Range, mixColor As Long)
'-------------------------------------------------------------------------------------
    Dim r As Range
    Dim f As Range
    Dim ff As Range
    For Each r In rng1
        Set f = rng2.Find(what:=r.Value, lookat:=xlWhole)
        Do While Not f Is Nothing
            If r.Interior.ColorIndex = 2 Then
                r.Interior.ColorIndex = mixColor
            Else
                r.Interior.ColorIndex = COLOR_A_B_C
            End If
            Set ff = rng2.FindNext
            If f.AddressLocal = ff.AddressLocal Then
                If f.Interior.ColorIndex = 2 Then
                    f.Interior.ColorIndex = mixColor
                Else
                    f.Interior.ColorIndex = COLOR_A_B_C
                End If
                Exit Do
            End If
        Loop
    Next
End Sub

異なるシートで行う場合は、範囲の指定をシート名を含めて指定するようにしてください。


    checkOverlap Worksheets("Sheet1").Range("A1:A9"), Worksheets("Sheet2")Range("D1:D4"), Worksheets("Sheet3").Range("D6:D9")

http://excelvba.pc-users.net/fol2/2_1.html

id:ahiru51

マクロにチャレンジしてみましたが・・・

動いてはいるようなのですが色が付かなかったりで駄目でした

私の勉強不足のようです。

わざわざ、ありがとうございました。

2009/06/29 16:29:29
id:sun-flower-0202 No.3

さんふらわー回答回数17ベストアンサー獲得回数12009/06/27 21:42:19

ポイント32pt

すごーくベタな方法で恐縮ですが、countifを複数列に設定する方法はどうでしょうか。

_|___A___ |_ B _ |C |__ D __ |_ E _|

1| [品名1] | [色] | - | [品名2] | [色] |

2| [DT-01] | [青] | - | [CT-01] | [赤] |

3| [DT-05] | [白] | - | [CT-02] | [緑] |

4| [DT-21] | [茶] | - | [B-05] | [橙] |

まず、重複を判定するための列を挿入します。

_|___A___ | B(挿入)|C   | D  |_ E _  |F(挿入)| G |

1| [品名1] |     | [色] | -  | [品名2] |     |[色] |

2| [DT-01] |     |[青]  | -  | [CT-01] |    | [赤] |

3| [DT-05] |     | [白] | -  | [CT-02] |    | [緑] |

4| [DT-21] |     | [茶] | -  | [B-05] |     |[橙] |

挿入した列に下記の式を設定します。

=(@countif(A:A,A1))+(@countif(E:E,A1)+(@countif (*****))

この結果が「2」以上だったら「重複あり」という意味です。

これなら、対象の列が増えてもシートが異なっても設定できます。

あまりにもアナログですみません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/count.htm#count...

id:ahiru51

アナログですが私にはまだ、コレぐらいの方が丁度良いのかも?

まだ、試してはいませんが試してみますね!

2009/06/29 16:31:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません