OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Excel97です

  • 暇なときにでも
  • 質問No.136993
  • 閲覧数37
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 73% (314/429)

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

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

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

[補足]
・条件付き書式で、うまく行きませんでした。
・VLOOKUPを使うようであれば、(苦手なので)少し詳しくお願いします。
・勝手ば言いますがよろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル12

ベストアンサー率 51% (254/492)

こんにちは

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

【エクセル技道場】

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

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

お礼率 73% (314/429)

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

その他の回答 (全1件)

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

関数や機能を使う方法は大変(面倒)なのでマクロを書いてみました。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そのコードウインドウに下記マクロ(Public~End Subをコピーして)を貼り付けます。 シートに戻って、ツール→マクロ→マクロ でTableMake を実行します。 今はH列から表を作り出します。複数の ...続きを読む
関数や機能を使う方法は大変(面倒)なのでマクロを書いてみました。

ツール→マクロ→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
お礼コメント
ubonoti01

お礼率 73% (314/429)

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

このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ