プロが教えるわが家の防犯対策術!

4月から各支店の会計をすべて担当することになり困っています。各支店ごと(50ほど)、さらに予算ごと(30ほど)に管理が必要です。入力シートをつくり入力すると、各支店のシートに予算ごとに振り分けることができたらずいぶん楽になると思うのですが・・・VBAの知識はまったくなくて困っています。どなたか助けてもらえないでしょうか?

(入力シート)
   A    B       C     D     E      F      G
1 事項  節    日付   内容  予算  支出額    備考
2 A支店 給料    H23.4.1 ○○ 100,000       4月分
3 D支店 通勤交通費 H23.4.5 ○○ 20,000       4月分
4 G支店 消耗品    H23.4.5 ○○ 50,000       前期分
5 M支店 備品    H23.4.6 ○○ 30,000       前期分
6 A支店 消耗品    H23.4.6 ○○    40,000
7 G支店 消耗品    H23.5.1 ○○    2500
8 A支店 消耗品    H23.5.1 ○○10000
9 M支店 備品    H23.5.16 ○○    25000
10 A支店 給料    H23.5.25  ○○    80000

(支店シート)シートは支店の数だけ作ります。

  A    B     C       D     E     F     G     H    I     J
 給料                                    手当
1 日付  内容 予算令達  支出金額残額備考        日付  内容  予算令達
2 H23.4.1  ○○ 100,000          4月分   
3 H23.5.25 ○○       80000 20000


※ A~Fは給料Gは空白でHからMは手当・・・・というように予算の数だけ右に続きます。

本当に困っててどなたか教えてください。
うまく見えるかわかりませんがイメージとして画像も添付します。

「エクセル(VBA)で振り分け予算を管理し」の質問画像

A 回答 (6件)

No.3~5です!



たびたびごめんなさい。

「入力シート」のSheet名宣言をしていませんでしたので、標準モジュールでは正常に動かないかもしれません。

もし動かなければ
「入力シート」のSheet見出し上で右クリック → コードの表示 → VBE画面に貼り付けてマクロを実行してみてください。

どうも何度も失礼しました。m(__)m
    • good
    • 0

'前回の続きです。


For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
str = Cells(i, 1)
If Cells(i, 2) = "給料" Then
If WorksheetFunction.CountIf(Sheets(str).Columns(1), Cells(i, 3) & Cells(i, 4)) = 0 Then
With Sheets(str).Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Value = Cells(i, 3) & Cells(i, 4)
With .Offset(, 2)
.Value = Cells(i, 3)
.NumberFormatLocal = "ge.m.d"
End With
.Offset(, 3) = Cells(i, 4)
.Offset(, 4) = Cells(i, 5)
.Offset(, 5) = Cells(i, 6)
.Offset(, 7) = Cells(i, 7)
End With
End If
End If
If Cells(i, 2) <> "給料" Then
If WorksheetFunction.CountIf(Sheets(str).Columns(2), Cells(i, 3) & Cells(i, 4)) = 0 Then
With Sheets(str).Cells(Rows.Count, 2).End(xlUp).Offset(1)
.Value = Cells(i, 3) & Cells(i, 4)
With .Offset(, 8)
.Value = Cells(i, 3)
.NumberFormatLocal = "ge.m.d"
End With
.Offset(, 9) = Cells(i, 4)
.Offset(, 10) = Cells(i, 5)
End With
End If
End If
Next i
End Sub 'この行まで

以上です。お役に立てば良いのですが・・・m(__)m
    • good
    • 0

No.3です!


コードだけで2000文字を超えているみたいなので、2回に分割してみます。
何度もごめんなさいね。m(__)m

Sub 振り分け()
Dim i As Long
Dim str As String
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
str = Cells(i, 1)
If Sheets(str).Range("A1") <> "" Then
Sheets(str).Columns("A:B").Insert
Sheets(str).Columns("A:B").Hidden = True
If Cells(i, 2) = "給料" Then
With Sheets(str).Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Value = Cells(i, 3) & Cells(i, 4)
With .Offset(, 2)
.Value = Cells(i, 3)
.NumberFormatLocal = "ge.m.d"
End With
.Offset(, 3) = Cells(i, 4)
.Offset(, 4) = Cells(i, 5)
.Offset(, 5) = Cells(i, 6)
.Offset(, 7) = Cells(i, 7)
End With
End If
If Cells(i, 2) <> "給料" Then
With Sheets(str).Cells(Rows.Count, 2).End(xlUp).Offset(1)
.Value = Cells(i, 3) & Cells(i, 4)
With .Offset(, 8)
.Value = Cells(i, 3)
.NumberFormatLocal = "ge/m/d"
End With
.Offset(, 9) = Cells(i, 4)
.Offset(, 10) = Cells(i, 5)
End With
End If
End If
Next i
'一旦ここまで・・・
    • good
    • 0

こんばんは!



↓の画像で上側が入力シート・下側が各支店のSheet(画像では「A支店」)としています。
尚、J列以降は同じ項目があれば列方向に表示するのではなく、今後色々な集計を行うことを考えれば
行方向に表示させることをお勧めします。

そこで一例ですが↓の画像の配置でのコードを載せてみます。

尚、コードだけでこのサイトで投稿できる2000文字ぎりぎりみたいなので、
この後もう一度投稿します。

Alt+F11キー → VBE画面が出ますのでコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

尚、コード内で作業用にA・B列を挿入し非表示にしていますので、各支店のSheetは通常通りA列から表があるものとしています。m(__)m
「エクセル(VBA)で振り分け予算を管理し」の回答画像3
    • good
    • 0

>(支店シート)シートは支店の数だけ作ります。


>※ A~Fは給料Gは空白でHからMは手当・・・・というように予算の数だけ右に続きます。
ではなくて
別途 抽出のシートを一枚だけ
*シート数を増やすと移動するのに大変になりませんか?
  A    B     C       D     E     F     G
1 事項  節
2 A支店 給料

4 日付  内容 予算令達  支出金額残額備考        
5 H23.4.1  ○○ 100,000          4月分   
6 H23.5.25 ○○       80000 20000

と準備して
フィルターオプションを使って 必要な情報を抽出する方法の方がシンプルだと思います。
先ほど同様な質問に回答しましたので紹介いたします。
http://oshiete.goo.ne.jp/qa/6569425.html
月ごとの抽出が必要だとも思いますので
(入力シート)
   A     B       C     D     E      F      G
1 年月    事項  節    日付   内容  予算  支出額    備考
2 2011年4月 A支店 給料    H23.4.1 ○○ 100,000       4月分
3 2011年4月 D支店 通勤交通費 H23.4.5 ○○ 20,000       4月分
4 2011年4月 G支店 消耗品    H23.4.5 ○○ 50,000       前期分
5 2011年4月 M支店 備品    H23.4.6 ○○ 30,000       前期分
と年月の列も準備して
  A    B     C       D     E     F     G
1 事項  節    年月
2 A支店 給料 2011年4月

4 日付  内容 予算令達  支出金額残額備考

として
年月と支店名と項目を指定して抽出できるほうが長く使えると思います。
あと入力作業を楽に進めるために
年月    事項  節の列には 別途 入力規則のリストの一覧のシートを作成して
入力規則を設定すると良いでしょう。
    • good
    • 0

次の通りに操作すると,マクロを全く知らなくても簡単にマクロを作って使えます。



準備:
作業用に全支店,全科目のデータを漏れなく網羅したダミーの予算を作成しておく
予算の表にオートフィルタを取り付けておく

手順1:
1.ツールメニューのマクロで「新しいマクロの記録」を開始する
  マクロの名前は「A支店給料」にする
2.オートフィルタでA支店,給料を絞り込む
3.表範囲を大きく選択してコピーする
  フィルタの▼がついた行を含めてコピーすること
4.所定のシートを開き,所定のセルに貼り付ける
5.予算シートに戻る
6.オートフィルタを全て表示する
7.ここで一度,マクロの記録を終了する

いちど記録したマクロを実行し,意図通りにデータを移動できているか確認する

手順2:
1.「A支店手当」など次の項目について手順1を繰り返し,1つずつマクロを記録する
  慌てて一度にやってしまおうとしないこと
2.全支店,全科目のマクロを記録終えたら,作業に漏れがなかったか再確認する
3.新しいマクロの記録を開始し,作成したマクロを最初から順番に1つずつ実行する
4.記録終了して完成。
    • good
    • 0

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