Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
findで検索御、空白セルまで選択
投稿日時: 21/01/04 16:18:20
投稿者: あまあま
メールを送信

A組
A    B   C   D  E   F  G  H   I   J    K
    番号 氏名 国語 数学 社会 理科 英語  合計 平均
1行   1     70  80  68  70  98   386 77.2
2行   2
3行   3
 
40行   40    50  68   59  65  82  242 48.4
41行  学年平均 60.451  58 64.289 63.5 70.414       コメント 英語の平均点が高いが、
42行                                    下の生徒の指導も必要
 
上記のような表があった場合
VBAを使って
1 J列の”平均”を検索して、空白セルまで値を少数点以下2桁にしたいと思っています。ただし、J1からJ40行までの設定
2 同じく41行の”学年平均を小数点以下2桁にしたいと思っています。ただし、I41行、J41行は空白で、K列にコメントがあるので、41行のD列から41行のK列の設定になりますが、こちらはk列41行と42行のセルが結合されています。
例えば1では
Dim rng As Object
    Set rng = Range("A:k").Find("平均")
    rng.EntireColumn.Select
    Selection.NumberFormat = "#,##0.00"
End Sub
を考えたのですが。列全体でなく、空白セルでまでを選択範囲にしたいと思っています。
2でも
同じようなことはできるのですが、結合してあるセルの前が選択できません。
 
手動でもできますが、シートが30枚あるので、VBAで効率化を図りたいと思っています。
どなたか、ご教示願えないでしょうか?
 
 
 
 

回答
投稿日時: 21/01/04 17:07:14
投稿者: Suzu

引用:
VBAで効率化を図りたい
であれば、
・J列 は、0.00
・41行目 は 0.000
を設定してしまえば済む話と思うのですが・・
 
 
Dim rng As Range
 
Set rng = Range("A:K").Find("平均")
Range(rng.Offset(1), Cells(Rows.Count, rng.Column).End(xlUp)).NumberFormat = "0.00"
 
Set rng = Range("B:B").Find("学年平均")
Range(rng.Offset(0, 2), Cells(rng.Row, Columns.Count).End(xlToLeft)).NumberFormat = "0.000"
 
これだと、I41、J41、K41 にも
書式 0.00 が設定されてしましますが
例のデータを見る限り 0.000 が設定されていても実害は無いですよね。
 
「K列 より前の 空白以外の最初」なら
Range(rng.Offset(0, 2), Cells(rng.Row, "K").End(xlToLeft)).NumberFormat = "0.000"
でも良さそうですが。
 
それが気に入らないのであれば、除外する条件を明示してください。
 

回答
投稿日時: 21/01/04 20:13:00
投稿者: WinArrow
投稿者のウェブサイトに移動

>シートが30枚あるので
対象のシートを全部選択して、作業グループにすれば、手操作で設定を変更できますよ。

投稿日時: 21/01/05 09:18:27
投稿者: あまあま
メールを送信

Suzuさん、WinArrowさん
ご教示いただいたもので問題解決しました。ありがとうございました。感謝しております。
まだまだVBAの勉強不足で申し訳ありません。