こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

(エクセルマクロ)複数の一連作業をマクロで行う処理について

以下の一連の処理についてマクロのコードを一式で教えてください。
【エクセルの構成】
1.シート名
日付だけ都度変更する形式 (例:YYYYMM_教えてGoo)
2.表
列 AからAAまでデータあり
行 1行目はタイトル。2行目以降からデータ。

【処理手順】
1.表全体のフォントを「MS Pゴシック フォント9」にする。
2.1行目から11行目と13行目を削除
3.A列とD列削除
4.一行目の項目行にオートフィルタを設定
5.ウインドウ枠の固定(先頭行(一行目の項目行)の固定)
6.H列に文字が入ってる行のみ削除
7.E列とF列を昇順に並び替え(優先順位は(1)F列、(2)E列)
8.データの最終行の次の行のU列からZ列に表を入れる。

(例)5行目が最終データ行の場合

 A…U V W X Y Z
1

5  
6 A =SUM()
7 B
8 C     =SUM()

(書式設定と詳細)
セルU6 「文字列A」と入力し、背景は黄色、文字色は赤
セルV6 背景は黄色、文字色は赤
セルW6 背景は黄色、文字色は赤
セルX6 背景は黄色、文字色は赤
セルY6 背景は黄色、文字色は赤
セルZ6 数式入力(=SUM(Z$2:Z5(最終行))、背景は黄色、文字色は赤

セルU7 「文字列B」と入力し、背景は黄色、文字色は赤
セルV7 背景は黄色、文字色は赤
セルW7 背景は黄色、文字色は赤
セルX7 背景は黄色、文字色は赤
セルY7 背景は黄色、文字色は赤
セルZ7 背景は黄色、文字色は赤

セルU8 「文字列C」と入力し、背景は黄色、文字色は赤
セルV8 背景は黄色、文字色は赤
セルW8 背景は黄色、文字色は赤
セルX8 背景は黄色、文字色は赤
セルY8 背景は黄色、文字色は赤
セルZ8 数式入力(=SUM(Z6:Z7)、背景は黄色、文字色は赤

すべて掛け線なし

9.データ最終行(表も含む)から5行目全体をグレーにし、その行のA列に「データA」と入力。
10.I列に文字が入ってる行のみを切り取り、一番最後にデータが入ってる行から6行目(「データA」と入力した下の行から)
から貼り付ける。(切り取った行は行削除し、上詰め)

11.データ最終行(切取貼り付けしたデータAを含む)から3行目全体を黄色にし、その行のA列に「データB」と入力。
12.X列の前に列を挿入し、挿入した列の一行目(項目行)に「タイトル」と記入。
13.挿入した列の2行目から前の列(W列)にデータが入ってる行まで数式(=ROUND(W2/1.05,0)※2行目に入力した場合)をコピー。
14.セルAB1に「No.」と記入。
15.G列からW列とY列からAA列を非表示にする。

6と8以降からマクロの自動記録ではできませんでした。
ご教授お願いします。

投稿日時 - 2009-11-05 14:44:15

QNo.5423821

すぐに回答ほしいです

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

暇つぶし

Sub シート名()
ActiveSheet.Name = Format(Date, "YYYYMM") & "_教えてGoo"
End Sub

Sub 表全体のフォント()
With Cells.Font
.Name = "MS Pゴシック"
.Size = 9
End With
End Sub

Sub 行を削除_1から11と13()
Range("1:11,13:13").Delete
End Sub

Sub A列とD列削除()
Range("A:A,D:D").Delete
End Sub

Sub 一行目の項目行にオートフィルタを設定()
Range("A1").AutoFilter
End Sub

Sub ウインドウ枠の固定()
Range("A2").Select
ActiveWindow.FreezePanes = True
End Sub

Sub H列に文字が入ってる行のみ削除()
Dim i As Long
For i = Cells(Rows.Count, "h").End(xlUp).Row To 1
If Cells(i, "h").Value <> "" Then Rows(i).Delete
Next
End Sub

Sub E列とF列を昇順に並び替え()
Range("E:F").Sort Key1:=Range("F1"), Order1:=xlAscending, Key2:=Range("E1"), Order2:=xlAscending
End Sub

Sub データの最終行の次の行のU列からZ列に表を入れる()
With Cells(Rows.Count, "a").End(xlUp).Offset(1, 20)
.Resize(3, 6).Font.ColorIndex = 3
.Interior.ColorIndex = 6
.Value = "文字列A"
.Offset(1).Value = "文字列B"
.Offset(2).Value = "文字列C"
.Offset(, 5).Formula = "=SUM(Z$2:Z5)"
.Offset(2, 5).Formula = "=SUM(Z6:Z7)"
End With
End Sub

昼休み終わるんでここまで
う~ん、こんな初歩的なこと30分でここまでしか出来なかった
修行せねば(笑)
検証してないのでうまく行かなかったらゴメンネ

投稿日時 - 2009-11-06 14:16:34

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>コードを一式で教えてください
この質問コーナーを、回答者を下請け的に使ってコードを書かせることは、だめです。
自分である程度勉強して、ヒントぐらいをもらう、という使い方が期待されている。
ーー
それに一見して、エクセルの操作をして、マクロの記録を採れば判りそうな初歩的なものが多いようだが。
>6.H列に文字が入ってる行のみ削除
行の削除のコードがわかれば、「H列に文字列が入ってない」は=""で判定できるから、組み合わせること。
>8.データの最終行の次の行のU列からZ列に表を入れる。
最終行はD=Range("A65536").End(xlUp).Row
で分かるから、
コピー貼り付け(マクロの記録が採れる)の操作とでも組み合わせればよい。

投稿日時 - 2009-11-05 22:22:22

ANo.1

すべてに答えるのは面倒なので、とりあえず、6のヒントだけ。

> 6.H列に文字が入ってる行のみ削除

H列の最下行のセル(Excel2003ならH65536)を選択して、Ctrl+↑を押すと、H列にあるデータのうち、一番下のデータにセルが移動します。

その状態で、Shift+Spaceを押すと、そのセルを含む行全体が選択されます。
(ちなみに、Ctrl+Spaceだと列全体)

その行を削除すれば、「H列で文字が入っている一番下の行を削除」したことになります。

これをH列のデータが無くなるまで繰り返せば良いです。
H列にデータが無くなったかどうかを判断するには、Ctrl+↑の結果、移動したセルがH1かどうか、で判断できます。

繰り返しは、Do While ~ Loop 構文が妥当ですかね。

投稿日時 - 2009-11-05 16:23:26

あなたにオススメの質問