表の中の同じ値のあるセル地番を表示させたいのですが、どうすれば良いのですか

A 回答 (2件)

同じような質問がありました。


『どういう式を使うのか?教えてください!』http://www.okweb.ne.jp/kotaeru.php3?q=177971
出来上がった表に対して、同じ値に色を付ける方法です。

>セル地番を表示させたいのですが
この『表示』をどう実現すればいいのか質問からははっきりしませんが、『入力したセルと同一値のセル』に色を付けてみました。
下の例では、表をセル範囲A1:C10として同一値があればセルに色を付けています。
範囲と色(コードの『***』がある箇所)は実状に合うように修正して下さい。
セルのアドレスを出力することも可能ですね。


Sheet1で行う例です。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、表示→プロジェクトエクスプローラ でプロジェクトエクスプローラを表示し、そこのSheet1をダブルクリックし出てきたコードウインドウに下記マクロを貼り付けます。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim rg As Range 'セル
  Dim checkFlg As Boolean '同一値があったか
  Dim checkRg As Range 'チェックする表番地

  Set checkRg = Range("A1:C10") '*** チェックする表の範囲をセットする
  Const myColorIndex = 36 '*** 色のインデックス(好きな番号にする)

  On Error GoTo ErrorHandler 'エラーが発生した場合は何もしない

  '入力が1つのセルに対して行われた場合
  If Target.Count = 1 Then
    '表の中に入力してなければ何もしない
    If Intersect(checkRg, Target) Is Nothing Then
      Exit Sub
    End If
    '入力されている範囲を調べる
    For Each rg In checkRg
      If Val(rg) = Val(Target) Then
        '値が一致していたら
        If rg.Address <> Target.Address Then
          '値が一致して別のセルなら色を塗る
          rg.Interior.ColorIndex = myColorIndex
          '同一値があった!
          checkFlg = True
        Else
          '自分だったら色を塗らない
          rg.Interior.ColorIndex = xlNone
        End If
      Else
        '値が違っていれば塗らない
        rg.Interior.ColorIndex = xlNone
      End If
    Next
  End If

  If checkFlg Then
    '値が一致したセルが有れば自分を塗る
    Target.Interior.ColorIndex = myColorIndex
  End If

  Exit Sub

ErrorHandler:

End Sub
    • good
    • 0

MATCH関数、INDEX関数とかを調べて見てはいかが?

この回答への補足

お返事ありがとうございます。
MATCH関数、INDEX関数を調べてみたのですが、違うような気がします。
例えば、   A
    1  1
    2  7
    3  3
    4  1
    5  2
    6  1
とあるとします。 A1に1が入るとすると、1と同じ値のあるセルはA4とA6
です。 このA4とA6を導き出すような関数、又は仕方があれば教えてほしいのです。 よろしくお願いします。

補足日時:2001/12/10 23:06
    • good
    • 0

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


人気Q&Aランキング

おすすめ情報