ここから本文です

高1です。エクセルVBAを勉強しています。 今、ワークシート2~4に次の表が行番...

ゆみさん

2014/12/3011:58:09

高1です。エクセルVBAを勉強しています。
今、ワークシート2~4に次の表が行番号がばらばらに並んでいます。

シート2
行番号セルa21が表の左上隅(生徒番号のセル)にくる。

生徒番号 英語 平均差
1 80 20
2 75 15
3 40 -20
4 65 5
5 35 25

シート3
行番号セルa33が表の左上隅(生徒番号のセル)にくる。

生徒番号 英語 平均差
1 70 10
2 55 -5
3 40 -20
4 60 0


シート3
行番号セルa7が表の左上隅(生徒番号のセル)にくる。

生徒番号 英語 平均差
1 50 -10
2 75 15
3 40 -20
4 35 -25
5 45 15
6 70 10
7 90 30
8 45 -15

これをVBAで自動で、シート2~3の表を、
まず平均差昇順でソートをかけ、マイナスの範囲の生徒番号・得点・平均差の数値のセルにダイダイイロの背景色をつけるコードを教えて頂けないでしょうか。

ソートをかけたり、interior.colorindexなどの操作はわかるのですが、シートの表の場所が同じ場所でなく、生徒人数もバラバラなのでどうコードをつければいいかわかりません・・・。

どうかよろしくお願いします。

閲覧数:
67
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2014/12/3013:00:19

一例です。

Sub sample()
Dim xSh, xTop
Dim i As Long, ii As Long
xSh = Array("Sheet2", "Sheet3", "Sheet4")
xTop = Array("A21", "A33", "A7")

For i = LBound(xSh) To UBound(xSh)
With Worksheets(xSh(i)).Range(xTop(i)).CurrentRegion
.Sort Key1:=.Columns(3), Order1:=xlAscending, Header:=xlYes
ii = WorksheetFunction.CountIf(.Columns(3), "<0")
If ii > 0 Then
.Cells(2, 1).Resize(ii, 3).Interior.ColorIndex = 46
End If
End With
Next i
End Sub

  • 質問者

    ゆみさん

    2014/12/3019:01:43

    ご回答ありがとうございました!コードがすごすぎてあまり理解できていませんが、1行1行じっくりと勉強させて頂きます。丁寧にコードを書いていただき感謝しています。ありがとうございました。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2014/12/30 19:03:08

感謝 私も早くこんなすごいコードを書いてみたいです♪ありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる