プロが教えるわが家の防犯対策術!

セルA1~AnにA組の生徒の名前(姓のみ)が、同様にセルB1~BmにB組の生徒の名前が入っています。以下E組まであります。それぞれの組の人数は異なります。また、各組共、同じ姓の者が入り交じって居るかも知れません。

[質問1]
各組に同姓者が居れば2名目以降は省いて、各組の中に同姓者が居ないような(見かけ上人数を減らしたような)表に作り替えたい。

[質問2]
質問1で作った表を元に、A組を基準として、B~E組にA組と同じ姓の者が居れば、その者の姓名を赤字にしたい。

[補足]
・条件付き書式で、うまく行きませんでした。
・VLOOKUPを使うようであれば、(苦手なので)少し詳しくお願いします。
・勝手ば言いますがよろしくお願いします。

A 回答 (2件)

こんにちは



 以下のページがご参考になるのでは?

【エクセル技道場】

-編集-重複するレコードは無視する
http://www2.odn.ne.jp/excel/waza/edit.html#SEC30

-条件付き書式-別シートにある文字列との重複チェック
http://www2.odn.ne.jp/excel/waza/cformat.html#SE …

参考URL:http://www2.odn.ne.jp/excel/waza/edit.html#SEC30,http://www2.odn.ne.jp/excel/waza/cformat.html#SE …
    • good
    • 0
この回答へのお礼

わあ~助かりました。不慣れなので少し時間がかかりましたが、質問1,2とも解決です。関数を使わずにできるとは思いませんでした。(条件付き書式の中でcountifを使いましたが・・・)
それにしても便利なサイトがあるんですね。早速「お気に入り」へ登録です。
有り難うございました。

お礼日時:2001/09/17 21:35

関数や機能を使う方法は大変(面倒)なのでマクロを書いてみました。



ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そのコードウインドウに下記マクロ(Public~End Subをコピーして)を貼り付けます。
シートに戻って、ツール→マクロ→マクロ でTableMake を実行します。
今はH列から表を作り出します。複数のシートがあれば、個別に実行します。ご参考に。

Public Sub TableMake()
  Const strSCol = "H" '作成する表を開始する列。今はH列
  Dim strCol As Integer '作成する表を開始する列の番号
    strCol = Asc(strSCol) - Asc("A") + 1
  Dim r As Integer '行カウンタ
  Dim c As Integer '列カウンタ
  Dim rwNum(5) As Integer 'A~E列の重複無しのデータ数
  Dim rwWrt As Integer '書き出す行

  Columns(strSCol & ":" & Chr(Asc(strSCol) + 4)).ClearContents '書き込む列をクリア
  With WorksheetFunction
    'A~E列から重複を除く
    For c = 1 To 5
      r = 1: rwWrt = 0
      While Cells(r, c) <> ""
        If .CountIf(Range(Cells(1, c), Cells(r, c)), "=" & Cells(r, c)) = 1 Then
          rwWrt = rwWrt + 1
          Cells(rwWrt, strCol + c - 1) = Cells(r, c)
        End If
        r = r + 1
      Wend
      rwNum(c) = r - 1
    Next
    'B~E列とA列を照合
    Dim rgA As Range '書き換えたA列
    Set rgA = Range(Cells(1, strCol), Cells(rwNum(1), strCol))
    For c = strCol + 1 To strCol + 4
      For r = 1 To rwNum(c - strCol)
        If .CountIf(rgA, "=" & Cells(r, c)) = 1 Then
          Cells(r, c).Font.ColorIndex = 3 'フォント=赤
        Else
          Cells(r, c).Font.ColorIndex = xlAutomatic 'フォント=自動に戻す
        End If
      Next
    Next
  End With
End Sub
    • good
    • 0
この回答へのお礼

ずいぶん細かくご回答頂き恐縮です。じつは#1ーkbonbさんの回答で解決しました。
マクロは数年前、覚えたばかりの頃にウィルスに感染して懲りてしまってからご無沙汰なんです。
ご回答をプリントして、また少し勉強し直してみます。
有り難うございました。

お礼日時:2001/09/17 21:44

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