[[20070929125208]] 『条件によって色をつけたい』(お茶) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件によって色をつけたい』(お茶)

 前回の記録
       算数  国語  英語  社会
 斉藤    70   60   20   40
 鈴木    50   30   90   30
 渡辺    75   80   85   60
 小笠原   60   40   50   40
 ・
 ・
 ・
 ・
 とあって、その下に今回の記録として
 鈴木    40   50   50   70

 と入力したときに、前回の鈴木と書かれている行を参照して
 前回より30点以上にアップしていれば赤色
 前回より30点以下にダウンしていれば青色

 となるような条件付き書式みたいなことにしたいのですが、
 やり方が見当つきません。
 前回と今回では人数がバラバラで、新しく増えた人やいなくなった人がいるため
 2枚目のシートを作って順番を同じにして比較するということはできません。
 またできれば1枚のシートでやりたいと思ってます。

 よろしくお願いします。


 >前回と今回では人数がバラバラで、新しく増えた人やいなくなった人がいるため
 >2枚目のシートを作って順番を同じにして比較するということはできません。
 >またできれば1枚のシートでやりたいと思ってます。
 前回の記録の羅列の下に今回の記録を羅列し、同じ名前がいた場合に、
  ・前回より30点以上にアップしていれば赤色
  ・前回より30点以下にダウンしていれば青色
 を実行したいと言う事でしょうか?

 更に”次回の記録”については、どのようにお考えでしょうか?
 (元夏バテ)


 >前回の記録の羅列の下に今回の記録を羅列し、同じ名前がいた場合に、
 >・前回より30点以上にアップしていれば赤色
 >・前回より30点以下にダウンしていれば青色
 >を実行したいと言う事でしょうか?
 そうです。次回については今のところ考えていないです。
 まだ試験的な段階ですので(汗)

 署名忘れました・・・
 (お茶)

 A1〜E5の範囲が前回、H1〜L5の範囲が今回として、
 今回の点数について色を付けるVBAのサンプル。

     A       B     C     D     E    F  G    H     I      J     K    L
 1         算数  国語  英語  社会                算数  国語  英語  社会
 2  斉藤    70    60    20    40         小笠原   70    60    20    40
 3  鈴木    50    30    90    30         斉藤     50    30    90    30
 4  渡辺    75    80    85    60         田中     75    80    85    60
 5  小笠原  60    40    50    40         鈴木     60    40    50    40

 Sub Test()
   Dim r As Range
   Dim i As Long
   Dim j As Long
   Dim v1 As Variant
   v1 = Range("A2:E5").Value

   For Each r In Range("H2:H5")
       For j = 1 To UBound(v1, 1)
           If r.Value = v1(j, 1) Then
              For i = 1 To 4
                  r.Offset(, i).Interior.ColorIndex = _
                   IIf(Abs(v1(j, i + 1) - r.Offset(, i).Value) < 30, 0, _
                   IIf(v1(j, i + 1) > r.Offset(, i).Value, 3, 5))
              Next
           End If
       Next
   Next
 End Sub
 今一つスムーズではないですけど、ご参考になれば。
 (元夏バテ)

      A         B       C       D       E 
1        算数  国語  英語  社会
2   斉藤    70   60   20   40
3   鈴木    50   30   90   30
4   渡辺    75   80   85   60
5   小笠原   60   40   50   40
・ 
・
・ 
11  鈴木    40   50   50   70
12  小笠原   60   75   80   50
13  斉藤    70   60   55   70

 11行目から今回の記録とした場合
 B11:E13をドラッグ選択しておきます。

 条件付き書式
 条件1 数式が =B11-VLOOKUP($A11,$A$2:$E$5,COLUMN(B1),FALSE)>=30   書式 フォント赤
 条件2  数式が =VLOOKUP($A11,$A$2:$E$5,COLUMN(B1),FALSE)-B11>=30    書式 フォント青

 >次回については今のところ考えていないです。まだ試験的な段階ですので(汗)
 別Sheetの場合はA2:E5の範囲に名前の定義をするかINDIRECT関数を用いることになります。(gon-2)


 >gon-2 さん
 VLOOKUPをこのように使えばいいんですね
 おかげでうまく作る表が完成しました。
 あとはデータを打ち込んでいくだけです^^
 どうもありがとうございました。

 >元夏バテさん
 こちらもうまくいきました!
 マクロは記録を使いながら練習してますが、まだまだ理解不足です(汗
 今回は誰でも使える仕様にしたいので、gon-2さんのを使わせていただきますm(__)m
 どうもありがとうございました。

 (お茶)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.