• ベストアンサー

エクセルXPです。名簿作成時にエラーを検出する

エクセルで名簿を作ります。 各チームごとにリーダーとメンバーがいます こんなカンジ リーダー|    メンバー  Aさん|○○さん ○○さん ○○さん・・・  Bさん|○○さん ○○さん ○○さん・・・  Cさん|○○さん ○○さん ○○さん・・・  Dさん|○○さん ○○さん ○○さん・・・ で、あるリーダーは別なチームのメンバーになる場合があるんですね。 例えばAさんがCさんのチームのメンバーになる、など。 それはいいのですが、その場合、お互いがお互いのリーダーになることは避けたい。 リーダー|    メンバー  Aさん|○○さん  Cさん ○○さん・・・  Bさん|○○さん ○○さん ○○さん・・・  Cさん|○○さん  Aさん ○○さん・・・  Dさん|○○さん ○○さん ○○さん・・・ こんな感じです。 名簿を更新する時、入力中にそれを自動的に検出することはできないでしょうか? 例えばAさんとCさんのセルに色をつけるとかです。 INDERECT関数とかを組み合わせていたのですが、うまく行きません。 できれば関数の組み合わせで実現できればと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.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は利きませんので)

yamya
質問者

お礼

ありがとうございます。 マクロNGというのは 私自身マクロに精通していないことと、 関数ならば「少しだけ分かる」という人と共同作業することになるので、なにか関数を組み合わせるだけで実現できないかな~と思っていたからです。 実はマクロでの処理も検討していて、実際取り掛かり始めてました。(慣れないので時間かかる) とても助かりますm(_ _)m ありがとうございましたm(_ _)m

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

メンバ列にリーダ列の名前が重複した場合、そのセルに色付けする方法ですが如何でしょうか。 (1)仮に名簿表がA1:D5で見出し行ありとし、メンバ入力セル範囲B2:D5を選択 (2)書式→条件付き書式 (3)「数式が」を選択、=COUNTIF($A:$A,B2)を入力 (4)書式→パターンタブで任意の色を選択→OK

yamya
質問者

お礼

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

関連するQ&A

専門家に質問してみよう