dポイントプレゼントキャンペーン実施中!

合計等の計算を最終行に組み込むマクロの作成について

いつも良い回答を有難うございます。
今回は下記のような作業をマクロで行なう方法をお聞きしたく質問させていただきました。
・データのあるところまで罫線を引きたいです。
・合計を挿入したいです。

条件としては
1)データはいつも同じ位置でおわりません。
2)合計の箇所はいつも場所が一緒ではありません。

A  B   C     D    E     F  
部署 No.  開始日  担当者  内容  工数
茨城 1 2010/5/7  B緒   研削  6.00
茨城 3 2010/5/16  B緒  掃除   6.83
茨城 4 2010/5/18  B緒  出荷   1.50
        ↓
A  B   C     D    E     F  
部署| No. | 開始日 | 担当者 | 内容 | 工数
茨城| 1  |2010/5/7 | B緒  | 研削 | 6.00
茨城| 3  |2010/5/16 | B緒  | 掃除 |  6.83
茨城| 4  |2010/5/18 | B緒  | 出荷 |  1.50
                   | 合計 |  14.33

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

A 回答 (6件)

sub macro1()


 '最終行を特定する
 with range("F65536").end(xlup).offset(1)

 '式を入れる
 .formular1c1 = "=SUM(R2C:R[-1]C)"
 .offset(0, -1) = "合計"

 '表全体の範囲に罫線を入れる
 range(range("A1"), .cells).borders(xlInsideVertical).linestyle = xlcontinuous

 '掃除
 .offset(0, -5).resize(1, 4).clearformats
 end with
end sub
    • good
    • 0
この回答へのお礼

回答有難うございます。
コードが書いてあり、助かります。
本当に有難うございます。

お礼日時:2010/05/28 08:00

これを機にSUBTOTAL関数の使い方を学習して下さい。

いくつ発生するかわからないのであれば1行目に合計セル、2行目から65536行目までを範囲とすれば明細いくつあっても可能です。



今はすぐに結果が欲しい状況かもしれませんが、作りあげたもの、確認したテクニックは質問者自身の財産になるよう自分のモノにして下さい。対応策は人それぞれで持ってますので何通りも答えが出ることあります。

逆引き本買う事オススメします。こうやって何度も質疑応答してもらって1つずつ出来そうなのを見て行く方が対応時間のロスかなあとも思います。
    • good
    • 0
この回答へのお礼

回答有難うございます。
逆引き辞書を探していますが、見やすくていいものとなるとなかなかなくて手間取っています。

お礼日時:2010/05/28 08:09

マクロ希望ということなので参考程度ですが、考えうる最終行に合計行を設けておいて


オートフィルタをかけておけば2クリックで希望の表ができると思います
フィルタは(空白以外のセル)
「合計等の計算を最終行に組み込むマクロの作」の回答画像5
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
最初はその方法を考えていたのですが、マクロボタンを押せばすぐに表が出来るほうがいいため
VBAを選びました。
でもやはり難しいですね。

お礼日時:2010/05/28 08:07

いつもどのような質問をしていて、今回は何をよろしくなのかが質問文からは読み取れないのですが・・・・


質問はExcelの場合でいいのかな?
>・データのあるところまで罫線を引きたいです。
マクロの何に関してがわからないのでしょうか?
Excelの機能の中に"マクロの記録"という機能があり、手作業で行った動作を記録してVBAの記述にしてくれます。
この機能を使って出来ませんでしたか(やってみて問題となったポイントは?)
>1)データはいつも同じ位置でおわりません。
これは、データ件数が変化するのでデータの最終行が何行目になるのかはわからない・・・という事でよいでしょうか?
それならば、データが連続で入力されている列の基準となる行(A1?)を選択してキーボードで Ctrl+↓ とすれば、データが入力されているに最終行が選択され、それを"マクロの記録"で記録してやれば
Range("A1").Select
Selection.End(xlDown).Select
このようになり、
これでデータの入力されている最終行が判るので、そこからなら罫線は引けますか??
もしデータの入力行に飛びがあるのなら最下段の行から Ctrl+↑ とすれば同じようにデータ入力行の最終行が選択されます。
参考
Range("A1048576").Select (Excel2007)
Range("A65536").Select  (excel2003) 
Selection.End(xlUp).Select

>・合計を挿入したいです。
判らない点が最終行の位置だけなら、上記の方法を応用して解決できませんか?
>2)合計の箇所はいつも場所が一緒ではありません。
一緒ではないというのは、何行目かわからない・・・・という事なのか?
それとも何列目かも判らない・・・・ということでしょうか??
何行目かはデータ件数の問題だけだろうから、もう大丈夫だと思いますが、何列目かも判らなののなら手作業で入力するときのセルの選択基準を示さないと、解決が難しいと思います。
    • good
    • 0
この回答へのお礼

回答有難うございました。

>Excelの機能の中に"マクロの記録"という機能があり、手作業で行った動作を記録してVBAの記述にしてくれます。
この機能を使って出来ませんでしたか(やってみて問題となったポイントは?)

マクロの記録をして見ましたが、集計データに合計を加えたいのでデータは一定ではなく、余白セルを多めに見たところにデータを置いて空白だけ消す、という作業をしても合計がエラーになってしまいます。

このコードを応用してやってみます。
ありがとうございます。

お礼日時:2010/05/28 08:05

回答No1です。


次のようにするのがベターでしょうか。

Sub 合計表示()

Dim LR As Integer
Dim LC As Integer

Range("A1:X1000").Borders.LineStyle = xlLineStyleNone

LR = ActiveSheet.Range("A65536").End(xlUp).Row + 1
LC = WorksheetFunction.Match("内容", Range("1:1"), 0)
Cells(LR, LC) = "合計"
Cells(LR, LC + 1) = WorksheetFunction.Sum(Range(Cells(1, LC + 1), Cells(LR - 1, LC + 1)))

With Range(Cells(1, 1), Cells(LR - 1, LC + 1))
.Borders.LineStyle = xlContinuous
End With
Range(Cells(LR, LC), Cells(LR, LC + 1)).Borders.LineStyle = xlContinuous

End Sub
    • good
    • 0
この回答へのお礼

回答有難うございます。
コードまで書いていただき本当にうれしいです。
助かりました。

お礼日時:2010/05/28 07:58

A1セルに部署があり1行目に内容や工数の項目名があるとしたら次のようなマクロでよいでしょう。



Sub 合計表示()

Dim LR As Integer
Dim LC As Integer

LR = ActiveSheet.Range("A65536").End(xlUp).Row + 1
LC = WorksheetFunction.Match("内容", Range("1:1"), 0)
Cells(LR, LC) = "合計"
Cells(LR, LC + 1) = WorksheetFunction.Sum(Range(Cells(1, LC + 1), Cells(LR - 1, LC + 1)))

With Range(Cells(1, 1), Cells(LR, LC + 1))
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlMedium
End With

End Sub
    • good
    • 0
この回答へのお礼

回答有難うございます!
コードまで記載して頂きたすかりました!
つかってみます!

お礼日時:2010/05/28 08:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!