人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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列の重複は調べてみたのですが、
わからなくて困っています。

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

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


●質問者: ahiru51
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CT DT Excel セル 入力
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● jccrh1
●16ポイント

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

数式が
=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...

◎質問者からの返答

ありがとうございます、

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

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


2 ● Mook
●32ポイント

条件付き書式や 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

◎質問者からの返答

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

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

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

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


3 ● さんふらわー
●32ポイント

すごーくベタな方法で恐縮ですが、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...

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ