• ベストアンサー

エクセルについて教えて下さい。

A1~A10・B1~B10・C1~C10の中に、7月から10月までの日にちをランダムに入力します。 A1~C10のセルに、同じ日にちが4つ以上入力されたときに、警告として、その日付が赤字に表示、または警告するようにするには、どうしたらいいのでしょうか。 よろしくお願いします。

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

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

>同じ日にちが4つ以上入力されたときにその日付が赤字に表示 ⇒方法1  (1)A1:C10範囲を選択→書式→条件付き書式  (2)「数式が」を選択、数式欄に=COUNTIF($A$1:$C$10,A1)>=4  (3)書式→フォントタブの色欄で赤色を選択、又はセル背景を色付けする場合はパターンタブで赤色を選択→OK ⇒方法2  (1)A1:C10範囲を選択→データ→入力規則  (2)「ユーザ設定」を選択、数式欄に=COUNTIF($A$1:$C$10,C3)<4、→OK  (蛇足)エラーメッセージタブで任意警告メッセージを登録 ※省略可能

morito_55
質問者

お礼

ありがとうございました。 条件付き書式で、作成することにしました。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

私もCOUNTIF利用を思いついてやって見たが、4つ目には、4つとも(例)セルに色が付いた。ランダムに入力するときは、最後(4つめ)がどれか判りにくい。 普通は最後は今入れたセルで覚えているだろうが。 ーー 最終入れたセルを色づけたたい、とやってみたが Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column >= 1 And Target.Column <= 3 And Target.Row >= 1 And Target.Row <= 10 Then If Application.CountIf(Range("A1:c10"), Target) >= 4 Then Target.Interior.ColorIndex = 6 End If End If End Sub では、4つ以上あってどれか(もちろん同じ値)削除したとき、色を 削除することが無い。これを盛り込もうとするとうまくいかない。 Changeイベントではセルの値を削除したセルの元の値がTargetでは捉えられないので難しそうで断念した。普通の使い方なら、下記で使えるかな。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column >= 1 And Target.Column <= 3 And Target.Row >= 1 And Target.Row <= 10 Then If Target = "" Then Target.Interior.ColorIndex = xlNone Else If Application.CountIf(Range("A1:c10"), Target) >= 4 Then Target.Interior.ColorIndex = 6 End If End If End If End Sub

morito_55
質問者

お礼

いろいろと、ありがとうございました。 簡単な条件付き書式で、作成することにしました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.6

例えば条件付き書式でA1:C10の条件を 「数式が」「=AND(COUNTIF($A$1:$C$10,A1)>3,ISNUMBER(A1))」としてセルの書式を設定 4つ以上入力された日付のセルの書式が変わります。 警告表示なら、「データ」「入力規則」を入力値の種類をユーザー設定で 数式を「=AND(COUNTIF($A$1:$C$10,A1)<4,ISNUMBER(A1))」 でエラーメッセージタブで警告文を設定する。

morito_55
質問者

お礼

ありがとうございました。 条件付き書式で、作成することにしました。

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

NO3です。言葉足らずでしたので補足します。 方法1は、同一日付が4つ以上となった場合に対象の全セルに色着けします。 方法2は、同一日付が3つまでを入力可能として4つ目を入力した時点で警告メッセージを表示します。 警告レベルは、停止・注意・情報(エラーメッセージタブ)があり、デフォルトは「停止」ですのでその他レベルもお試し下さい。

noname#192382
noname#192382
回答No.4

次のマクロでできましたよ。 Option Explicit Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2008/5/2 ユーザー名 : ' ' Range("A1:A10").Select Selection.Copy Range("E1:E10").Select ActiveSheet.Paste Range("B1:B10").Select Application.CutCopyMode = False Selection.Copy Range("E11:E20").Select ActiveSheet.Paste Range("c1:c10").Select Application.CutCopyMode = False Selection.Copy Range("E21:E30").Select ActiveSheet.Paste Columns("E:E").Select Application.CutCopyMode = False Selection.Sort Key1:=Range("E1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Dim mygyo As Integer, mygyo4 As Integer For mygyo = 1 To 30 mygyo4 = mygyo + 3 If Cells(mygyo, 5) = Cells(mygyo4, 5) Then 'akaji MsgBox "4つ以上の重複" Else End If Next mygyo End Sub

morito_55
質問者

お礼

いろいろと、ありがとうございました。 簡単な条件付き書式で、作成することにしました。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.2

COUNTIF関数と条件付き書式でできますよ。

morito_55
質問者

お礼

ありがとうございました。 条件付き書式で、作成することにしました。

  • hide0824
  • ベストアンサー率0% (0/1)
回答No.1

通りすがりに拝見しました。 関数のVLOOKUPとIFを組み合わせれば可能だと思います

morito_55
質問者

お礼

ありがとうございました。 条件付き書式で、作成することにしました。

関連するQ&A