プロが教える店舗&オフィスのセキュリティ対策術

エクセルで名簿を作ります。
各チームごとにリーダーとメンバーがいます
こんなカンジ

リーダー|    メンバー
 Aさん|○○さん ○○さん ○○さん・・・
 Bさん|○○さん ○○さん ○○さん・・・
 Cさん|○○さん ○○さん ○○さん・・・
 Dさん|○○さん ○○さん ○○さん・・・


で、あるリーダーは別なチームのメンバーになる場合があるんですね。
例えばAさんがCさんのチームのメンバーになる、など。
それはいいのですが、その場合、お互いがお互いのリーダーになることは避けたい。

リーダー|    メンバー
 Aさん|○○さん  Cさん ○○さん・・・
 Bさん|○○さん ○○さん ○○さん・・・
 Cさん|○○さん  Aさん ○○さん・・・
 Dさん|○○さん ○○さん ○○さん・・・

こんな感じです。

名簿を更新する時、入力中にそれを自動的に検出することはできないでしょうか?
例えばAさんとCさんのセルに色をつけるとかです。
INDERECT関数とかを組み合わせていたのですが、うまく行きません。
できれば関数の組み合わせで実現できればと思っています。

A 回答 (2件)

「できれば関数で」とのことでしたので関数でも考えてみたのですが、縦横の二重の検索処理で非常に複雑になり実用的ではありませんでした。

やはりマクロの方が簡単ですね。マクロがNGなら読み飛ばして下さい。

以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。

Sub Macro5()
Dim idx As Long
Dim rng As Range
Dim res
 Application.ScreenUpdating = False
 With ActiveSheet
  .Range("A2:IV65536").SpecialCells(xlCellTypeConstants, 3).Interior.ColorIndex = xlNone
  For Each rng In .Range("B2:IV65536").SpecialCells(xlCellTypeConstants, 3)
   For idx = 2 To .Range("A65536").End(xlUp).Row
    If rng.Value = .Cells(idx, "A") Then
     res = Application.Match(.Cells(rng.Row, "A"), _
       .Range(.Cells(idx, "B"), .Cells(idx, "B").End(xlToRight)), 0)
     If IsNumeric(res) Then
      rng.Interior.ColorIndex = 6
      .Cells(idx, "A").Interior.ColorIndex = 6
     End If
    End If
   Next idx
  Next rng
 End With
 Application.ScreenUpdating = True
End Sub

実行前に必ずデータはセーブしておいてください(結果が気に召さない場合にUNDOは利きませんので)
    • good
    • 0
この回答へのお礼

ありがとうございます。

マクロNGというのは
私自身マクロに精通していないことと、
関数ならば「少しだけ分かる」という人と共同作業することになるので、なにか関数を組み合わせるだけで実現できないかな~と思っていたからです。

実はマクロでの処理も検討していて、実際取り掛かり始めてました。(慣れないので時間かかる)
とても助かりますm(_ _)m
ありがとうございましたm(_ _)m

お礼日時:2007/05/17 21:48

メンバ列にリーダ列の名前が重複した場合、そのセルに色付けする方法ですが如何でしょうか。


(1)仮に名簿表がA1:D5で見出し行ありとし、メンバ入力セル範囲B2:D5を選択
(2)書式→条件付き書式
(3)「数式が」を選択、=COUNTIF($A:$A,B2)を入力
(4)書式→パターンタブで任意の色を選択→OK
    • good
    • 0
この回答へのお礼

ありがとうございます。
この場合リーダーは検出できるのですが、実際の状況はほとんどのリーダーがどこかのメンバーになっているんですね。

逆を言えば、大部分のメンバーがリーダーでもあるので、リーダーを検出するだけではあまり意味がありません。(なので更新時に見逃してしまう)
「お互いにリーダーであること」のみを検出できないでしょうか?

お礼日時:2007/05/17 18:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!