- 締切済み
エクセル 照合
エクセルの照合についておしえてください。 Sheet1 A B 1 ○ バラ 2 ★ ユリ と入力してあり、 Sheet2のどこかの2つのセルに ○ バラ と入力されていれば、 sheet1の ○ バラ の文字色が変わるようにしたいのです。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 恐縮です、括弧が足りませんでしたので以下の通り訂正します。 =(COUNTIF(aaa,$A1))*(COUNTIF(aaa,$B1))
- mitarashi
- ベストアンサー率59% (574/965)
A No.2です。 >2行目2列目まではうまくできたのですが、 それは、そういうコードになっているからです。 For i = 1 To 2 のところで、2行目までしか処理していませんので。 Sheet1の構造が分かりませんので、基本的な考え方を提示したのみですので、このあたりは、環境に合わせて変更してください。 最終行が固定なら、2の代わりに最終の行の番号を入れていれれば良いですし、 A列に、他に何もデータが入っていなければ、上記の代わりに For i = 1 To Application.WorksheetFunction.CountA(Sheets("Sheet1").Range("$a:$a")) に変更してください。 データの範囲の自動認識の仕方は色々ありますので、”最終セル”とかで検索してお調べ下さい。
- mitarashi
- ベストアンサー率59% (574/965)
別解で、マクロ使用版です VBAのヘルプにある、Findの使用例を改造しました。 Sub test() Dim i As Long Dim firstRange As Range Dim secondRange As Range Dim c As Range Dim firstAddress As String For i = 1 To 2 Set firstRange = Sheets("Sheet1").Cells(i, 1) Set secondRange = firstRange.Offset(0, 1) With Worksheets("Sheet2").UsedRange Set c = .Find(firstRange.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then firstAddress = c.Address Do If c.Offset(0, 1).Value = secondRange.Value Then firstRange.Font.ColorIndex = 5 secondRange.Font.ColorIndex = 5 End If Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With Next i End Sub 少量のデータで試験しましたが、多量のデータになると、速度の方は心配です。なお、当方Excel2000です。
補足
実行してみたのですが、 2行目2列目まではうまくできたのですが、 それ以降がうまくできませんでした。 アドバイスお願いできますでしょうか。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 (1)Sheet2の全セルを選択→名前ボックスに任意名(仮にaaaとします)を入力 (2)sheet1の対象セル範囲を選択→書式→条件付き書式→「数式が」を選択、数式欄に=(COUNTIF(aaa,$A1)*(COUNTIF(aaa,B1))→書式→フォントタブの色欄で任意色を選択→OK
補足
ありがとうございます。 でも)の数が足りない?のでしょうか。 うまくできません・・・。 アドバイスお願いします。
お礼
ありがとうございました!できました!!