• 締切済み

エクセル(VBA)で振り分け予算を管理したい

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 4 5 ※ A~Fは給料Gは空白でHからMは手当・・・・というように予算の数だけ右に続きます。 本当に困っててどなたか教えてください。 うまく見えるかわかりませんがイメージとして画像も添付します。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.3~5です! たびたびごめんなさい。 「入力シート」のSheet名宣言をしていませんでしたので、標準モジュールでは正常に動かないかもしれません。 もし動かなければ 「入力シート」のSheet見出し上で右クリック → コードの表示 → VBE画面に貼り付けてマクロを実行してみてください。 どうも何度も失礼しました。m(__)m

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

'前回の続きです。 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

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

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 '一旦ここまで・・・

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! ↓の画像で上側が入力シート・下側が各支店のSheet(画像では「A支店」)としています。 尚、J列以降は同じ項目があれば列方向に表示するのではなく、今後色々な集計を行うことを考えれば 行方向に表示させることをお勧めします。 そこで一例ですが↓の画像の配置でのコードを載せてみます。 尚、コードだけでこのサイトで投稿できる2000文字ぎりぎりみたいなので、 この後もう一度投稿します。 Alt+F11キー → VBE画面が出ますのでコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) 尚、コード内で作業用にA・B列を挿入し非表示にしていますので、各支店のSheetは通常通りA列から表があるものとしています。m(__)m

すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

>(支店シート)シートは支店の数だけ作ります。 >※ A~Fは給料Gは空白でHからMは手当・・・・というように予算の数だけ右に続きます。 ではなくて 別途 抽出のシートを一枚だけ *シート数を増やすと移動するのに大変になりませんか?   A    B     C       D     E     F     G 1 事項  節 2 A支店 給料 3 4 日付  内容 予算令達  支出金額残額備考         5 H23.4.1  ○○ 100,000          4月分    6 H23.5.25 ○○       80000 20000 7 と準備して フィルターオプションを使って 必要な情報を抽出する方法の方がシンプルだと思います。 先ほど同様な質問に回答しましたので紹介いたします。 http://okwave.jp/qa/q6569425.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月 3 4 日付  内容 予算令達  支出金額残額備考 として 年月と支店名と項目を指定して抽出できるほうが長く使えると思います。 あと入力作業を楽に進めるために 年月    事項  節の列には 別途 入力規則のリストの一覧のシートを作成して 入力規則を設定すると良いでしょう。

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

次の通りに操作すると,マクロを全く知らなくても簡単にマクロを作って使えます。 準備: 作業用に全支店,全科目のデータを漏れなく網羅したダミーの予算を作成しておく 予算の表にオートフィルタを取り付けておく 手順1: 1.ツールメニューのマクロで「新しいマクロの記録」を開始する   マクロの名前は「A支店給料」にする 2.オートフィルタでA支店,給料を絞り込む 3.表範囲を大きく選択してコピーする   フィルタの▼がついた行を含めてコピーすること 4.所定のシートを開き,所定のセルに貼り付ける 5.予算シートに戻る 6.オートフィルタを全て表示する 7.ここで一度,マクロの記録を終了する いちど記録したマクロを実行し,意図通りにデータを移動できているか確認する 手順2: 1.「A支店手当」など次の項目について手順1を繰り返し,1つずつマクロを記録する   慌てて一度にやってしまおうとしないこと 2.全支店,全科目のマクロを記録終えたら,作業に漏れがなかったか再確認する 3.新しいマクロの記録を開始し,作成したマクロを最初から順番に1つずつ実行する 4.記録終了して完成。

すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAについて教えてください

    エクセル2003 シート1     A       B      C 1  3月1日 A 100     *A列はカレンダーコントロールより選択としています 2  4月1日 B 100 3  3月1日 C 200     *B列はコンボボックスより選択としています 4  3月1日 D 200 5  4月1日 E 300     *C列は直接入力としています 6  4月1日 F 300 7  3月1日 G 100 8  4月1日 H 200 9  3月1日 I 200 10  4月1日 J 100 上記シート1の表のC列を下記シート2のC列に条件集計する シート2    A       B       C 1  3月1日   A~E     500    *選択した日付ごと及びA・B・C・D・Eの集計  2  3月1日   F~J     300    *選択した日付ごと及びF・G・H・I・Jの集計     3  4月1日   A~E     400    *選択した日付ごと及びA・B・C・D・Eの集計    4  4月1日   F~J     600    *選択した日付ごと及びF・G・H・I・Jの集計  すいませんが上記コードを教えてください 困ってます よろしくお願いします      

  • ExcelのVBAについて

    ExcelのVBAについて VBA全くの初心者です。 以下のような処理を行いたいのですが、どなたかご教授をお願いします。 以下のように支店(1)~(3)のシートがあります。 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、   一致しない行を不一致データシートに出力する もう一つ別のマクロで、 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、、   一致する行を一致データシートに出力し、D列に対象データがあるシート名を表示する   ※可能でしたら、E列に対象データがある行番号も表示する -------------------------------- シート名:支店(1) A      B     C 商品No   商品名   備考 011    商品A   備考A 009    商品B   備考B 015    商品C   備考C -------------------------------- シート名:支店(2) A      B     C 商品No   商品名   備考 008    商品A   備考A 023    商品B   備考B 004    商品C   備考C -------------------------------- シート名:支店(3) A      B     C 商品No   商品名   備考 007    商品A   備考A 033    商品B   備考B 018    商品C   備考C -------------------------------- シート名:入力シート A      B     C 商品No   商品名   備考 ※ここに複数行入力する -------------------------------- シート名:不一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される -------------------------------- シート名:一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される

  • エクセルで特定の値を入力すると自動的に振り分け

    例えば、シート1に以下のような入力するセルがあるとします。     A        B     1   日付     ( 4/29)  2   項目     ( 給料) 3   収入     (100,000)  4   支出       5   備考    (5月分一部前借り) 普段はB列は空白になっています。 またシート2、シート3・・・以降は「月別」に分かれています。(シート2は4月用、シート3は5月用) もし、B1の日付が4月だった場合、シート2の部分の特定各セルにB2~5までの内容も反映させられるようにしたいです。 同じく、B1に5月と入力された時点で、シート3の特定各セルにB2~5までの内容も反映させられるようにしたいです。 この様なことは可能なのでしょうか? 表現の仕方が分かりづらいかもしれませんが、どなたかご協力頂けないでしょうか。 よろしくお願いいたします。

  • 経費予算管理のエクセル

    経費予算を管理するエクセルを作成したいと思っております。 ”予算”シートと”実績”シートを作成して、月ごとに各勘定ごとの数値を入力します。 次に”対比”シートを作成し、 A2セルに例えば4月と入力すると 予算シートと実績シートの4月の数値を”対比”シートに抽出して表示させたいです。 だいぶ無知である為、説明不足かもしれませんが、どうかご教授をお願いします。

  • Excel マクロ 条件抽出貼り付け等

    いろいろ拝見させていただいているのですが うまく設定できず、困っています。 使用者が数名いる(そしてその数名がそれぞれで集計を取りたい)ので シートのタブ名、シート数、基準となる年月が固定されないことが前提です。 集計のシートがあります(このシートもたとえば2月・3月・4月…と数ヶ月分で複数シートになる可能性があります) ・A1セルには、起点となる年月が入力 ・A3~A6セルには、目標・予定・実績・備考が入ります。 各支店のシートがあります(支店数は、使用者によって様々です。最大で25くらいになるかと思いますが、書式は同じです) ・A1セルには、支店名(タブを変更したら、A1セルが連動するように数式を組んでいます) ・A2セル、A8セル、以降6行毎に、年月日(1シートで12ヶ月分予定) ・A3~A6セルには、目標・予定・実績・備考が入ります。 ・表の一塊は、A2:AB6です。 各支店のシートから集計シートに転記をしたい。 A支店~たとえばG支店までの7支店があり、 (1)集計シートA1セルにある年月を基準に、各支店シートの該当月の表の検索をかけ (2)集計シートのA2以降6行毎(各支店シートでは年月を入れているセル)のセルに支店名を張り付け (3)各支店シートA3:AB6の内容を、集計シートのA3:AB6に値と数値の書式貼り付けをしたい  (表一塊毎) (4)集計シートのA支店・B支店の貼り付けの間には、1行挿入をしておきたい 同じような質問が…というお返事があることを承知でお伺いしています。 いただいた回答を基に、勉強をしていきたいと思っていますので なにとぞよろしくお願い申し上げます。

  • EXCEL VBA マクロ

    3つの同じフォーマットのファイルがあります。 それぞれ、 東京支店 大阪支店 本社 とします。 (1)A列に日付が入ってます。 (2)但し、日付はランダムです。 (3)B~H列までに、その日付に入(1/1)と終了日(1/15)を入力して、その期間の情報(1/1~1/15のA列からH列の情報)を本社のファイルにコピペすることはマクロで可能でしょうか。 よろしくお願い致します。

  • エクセルVBAの入力について

    "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)すべてコピーして、 貼り付ける場所が"Sheet2"のA1:Z10の範囲内で、 A1はB列、C1はG列、F1はH列、G1はZ列の空白セルに上詰めで貼り付ける。 なおF、G、H、Z列以外の列には値が入力されていたり空白もあります。 また同時に、 "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)の内でA1とF1のみコピーして、 貼り付ける場所が"Sheet3"のC1:Y10の範囲とC13:Y23範囲内で、 A1はC列、F1はY列の空白セルに上詰めで貼り付ける。 なおC、Y列以外の列には値が入力されていたり空白もあります。 またC11:Y12の範囲内にはすべて値が入力されています。 よろしくお願いします。

  • エクセル関数 支出管理のやり方

    エクセルの関数について質問です。 支出に関する表を作成しているのですが 例えば シート1のA行に1か月分の日付を入れて、B行に預金額の流れを管理します。 シート2のA行に預金額、B行に個々の支払期限日、C行に残高を入れて管理をします。 支払期限日は毎月違うので、シート2のB行に入れた日付がシート1のA行の日付と同じ日付だった場合 シート1の同じ日付になる列に、シート2の同じ日付のC行の残高が自動入力されるようにしたいのですが いくら調べても、関数がわかりません。 分かる方が居たら教えてください。 お願いします。

  • 支出予算科目について

    例えば、下記のような感じで掲載されている、支出予算科目のサイトがありましたら、何方かご紹介いただけないでしょうか。 よろしくお願いいたします。 例) ボールペン    → 消耗品費 エンジンオイル → 消耗品費 ガソリン      → 燃料費 運送料      → 運搬費 給料 → 人件費  

  • EXCEL VBA 条件にあったものをコピー

    こんにちは。 VBA初心者です(いつまでたっても) シート1とシート2は同じ表 シート1(10月)に下記のような表があるとして(範囲は決まっていて表の20行目から80行目)   シート1 印  日付  商品  備考     11/3  漬物  長期保存可 1   11/4  菓子  日持ちしない     11/5  果物  日持ちしない シート2(11月)に、 印で1がついたものをものを除いてコピーしたいのです。   シート2 印  日付  商品  備考     11/3  漬物  長期保存可     11/5  果物  日持ちしない シートの保護の関係でVBAでこれをやりたいのです。 よろしくお願いします。

このQ&Aのポイント
  • 溶接部位のエッチングで失敗する理由について調査しました。
  • 溶接部位のエッチングにおける作業ミスの要因をまとめました。
  • 溶接部位のエッチングがうまくいかない場合の原因を考察しています。
回答を見る

専門家に質問してみよう