• ベストアンサー

(Excel)毎月入力し直す金額シートから、年間(月別)累計シートを作成したい

WinXPでExcel2002を使っています。 今回の内容ですが、 以下のような月次給与計算シートがあります。  毎月15日に入力されるので、内容が月で変わります。  セルA1 処理月 セルB2 職員名 セルC2 給与額              ・・・      ・・・ 上記月次計算が終了した時点で、 以下のような職員別月別給与累計表に自動転記し、作成するにはどうすればよいでしょうか?      1月 2月 ・・・ 12月 計 職員名 ・・・  よろしくお願いします。

  • baura
  • お礼率89% (172/192)

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

シートが月別でなく、一つのシートに各月分が連続して書かれているのなら、ピボットテーブルを使えば一発なのですが…。 Excel勉強中の身で、自分の仕事にも使い回せそうなので、課題と思ってマクロを組んでみました。「月次計算のタイミングで転記」とのことで、そのタイミングで実行するマクロです。ただし、正常に動作するためには以下の点に注意が必要です。 ・月次給与計算シートと職員別給与累計表のシートは同一ブックにあり、それぞれ1番目、2番目のシートとなっている。 ・「職員別給与累計表」には月名と職員名は予め正しく記入されている。 ・「職員別給与累計表」にはB1~M1に「○月」と入力されており、A2より下に職員名一覧が空白なく最後まで入力されている ・合計列には1月~12月の合計を求める数式はあらかじめ入っている。 と仮定しています。 エラーハンドリングとしては、 ・月次給与計算シートのA1に正しい月数が入ってなかったらエラー ・月次給与計算シートと職員別給与累計表の職員名の並び順は違ってもかまわないが、職員別給与累計表に転記しようとした名前がない場合は警告を出し、処理を続行するか中断するか選択できる。 となっています。 Alt+F11でVBEを起動し、ThisWorkBookにでも以下のコードを貼り付けて実行してみてください。うまく動かないときや、違うブックに転記したいときは補足願います。 Sub 職員別給与累計表更新() Const GETSUJI = 1 Const RUIKEI = 2 Dim This_Month As String '月次給与計算シートのA1に記入さ れている月数 Dim Ruikei_Column As Integer '職員別給与累計表シートの当月の列ナンバー Dim Ruikei_Shokuin As Range '職員別給与累計表シートに転記中の職員の名前が入ったセル Dim Ruikei_Shokuin_Row As Integer '上記セルの行番号 Dim Shokuin_Row As Integer '転記中の職員の月次給与計算シート上の行番号 Dim Shokuin_Name As String '転記中の職員名 Dim Shokuin_Salary As Long '転記中の職員の当月給与額 Dim IsContinue As Integer '転記する職員名が職員別給与累計表になかった場合に '処理を続行するかどうかのフラグ This_Month = Worksheets(GETSUJI).Range("A1").Value If Val(This_Month) < 1 Or Val(This_Month) > 12 Then MsgBox "月の指定に誤りがあります", vbCritical, "エラー" With Worksheets(GETSUJI) .Activate .Range("A1").Select End With Exit Sub End If Ruikei_Column = Val(This_Month) + 1 Shokuin_Row = 2 Shokuin_Name = Worksheets(GETSUJI).Cells(Shokuin_Row, 2) Do While (Shokuin_Name <> "") Set Ruikei_Shokuin = Worksheets(RUIKEI).Range("A:A").Find(Shokuin_Name, , xlWhole) If Ruikei_Shokuin Is Nothing Then Worksheets(RUIKEI).Activate IsContinue = MsgBox("社員「" & Shokuin_Name & "」が登録されてません " & vbCr & _ "続行しますか?", vbYesNo + vbExclamation, "社員未登録") If IsContinue = vbNo Then Exit Sub End If Else Ruikei_Shokuin_Row = Ruikei_Shokuin.Row Shokuin_Salary = Worksheets(GETSUJI).Cells(Shokuin_Row, 3).Value Worksheets(RUIKEI).Cells(Ruikei_Shokuin_Row, Ruikei_Column) = Shokuin_Salary End If Shokuin_Row = Shokuin_Row + 1 Shokuin_Name = Worksheets(GETSUJI).Cells(Shokuin_Row, 2) Loop Worksheets(RUIKEI).Activate End Sub

baura
質問者

お礼

ham_kamo さん。どうもありがとうございました。 VBA?ですね。 早速、確認してみます。

関連するQ&A

  • エクセルで前シートを参照して累計金額をだしたい。

    エクセルで現場ごとに日報を作成しています。 (現場単位で、2~3ヶ月で1つの日報ファイルを作成しています) 1日1シートで作成し、シート名は日付(例:1月2日なら「0102」)でつけています。 毎日かかった経費と、その日までの合計(累計)の経費をだしたいと思っています。 その日の金額(A1)に、前日までの累計の金額(一つ前のシートのA2)を足して、その日までにかかった経費を(A2)に表示させたいと思い 色々と調べて以下の方法にたどり着きました。 名前の定義に「前シート」として、参照範囲に 「=MID(INDEX(GET.WORKBOOK(1)&T(NOW()),GET.DOCUMENT(87)-1),FIND("]",INDEX(GET.WORKBOOK(1)&T(NOW()),GET.DOCUMENT(87)-1))+1,31)」を入力し 累計を求めたいセル(A2)には 「=INDIRECT("'"&前シート&"'!A2")+A1」と関数を入れました。 これで一応でるようにはなったのですが、エクセルを閉じて、再び開くと A2には「#NAME?」と表示されてしまい また名前の定義を設定し直さなければなりません。 私一人が使うわけではなく年配の上司も見るので、できれば開くたび、数字が表示されるようにしたいのですがどうすればよいでしょうか? ちなみに、他の名前の定義を使用している関数については、再び開いても数字が表じされています。 あともうひとつ・・・名前の定義以外で同じように累計を計算する関数はありますか? よろしくお願いします。

  • Excel、売上表の累計欄、未入力の場合「-」を表示させたい。。

    WindowsXP/Excel2000を使用です。 Excelで、売上表を作りました。 A列に日付、B列に売上、C列に売上の累計という、 単純なデータです。 C列の累計欄には、下記の様な計算式を入れています。 =B1 =B1+B2 =B2+B3  ・  ・  ・ 例えば、今日3月13日の売上データを入力すると、 累計の数字に加算されていきます。。 (14日以降のセルにも、累計の数字が入ってしまいます。) ここで、問題なのですが、 B列のセルに、売上データを入力していない場合に、 C列(累計)が、表示されないようにしたいのですが、可能でしょうか? 理想を言えば、「-」←このマークが入れば、ウレシイです! よろしくお願いします。

  • Excelでマクロを使わず、その月の累計を数字を入力するだけで集計するには

    Excel2003です。 Y4のセルに以下の数式が入力されています。 =SUM(A4,C4,E4,G4,I4,K4,M4,O4,Q4,S4,U4,W4) これは4月~3月までの累計になります。 上記の数式を、4月なら=SUM(A4)に 5月なら=SUM(A4,C4)に現在は手で数式を直しています。 これを例えばY3のセルに5月と入れたら、A4+C4の数式にするには どうすればいいのでしょうか? IF関数でも無理そうです。 いい案がありましたら、教えてください。 よろしくお願いします。

  • Excel2000で作業票のようなものを作成したいのですが・・・

    Excel2000であるセルに開始時刻を入力すると、それ以下のセルに30分おきの時刻を計算して表示するように、表を作成しました。 時刻の計算はTIME関数で計算できたのですが、その中である一定の時間帯(例えば休憩時間の12:00~13:00など)を 省いて計算させることは可能でしょうか? いろいろ試してみたのですが、うまくいきません。 初歩的な質問ですみませんが教えてください。

  • 【Excel】自動で転記できますか?

    Excel2003で仕入帳を作っています。 仕入先ごとにコードNo.というものがあり、そのNo.をシート名に しています。仕入先の数が多いので、  シート名『0301』~『0320』→[A]というファイル  シート名『0410』~『0432』→[B]というファイル          ・          ・ といった具合にコードNo.をもとにファイルを分けていて 仕入帳のファイルは全部で8個あります。 (ファイルによってシート数は違いますが、だいたい20枚前後です。) 毎月、コードNo.・会社名・月計・累計の一覧表を作っているのですが これを例えば『一覧表』というシートを別に作って、このシートに 自動で転記するようなことはできるのでしょうか? ちなみに… すべてのシートで、会社名→C2セル 月計→W1セル 累計→Y1セルに 入力されています。 マクロを使用すれば、可能でしょうか? 勉強し始めて間もないのですが、よろしくお願いします。

  • エクセルで本社提出用の月別集計表を作成していて

    エクセルで本社に月別集計を提出しています。集計表は本社から送付されたものを使用しないといけないです。 日にちを毎月入力していましたが、できない人がいるので、A1とA2のセルに年月を入力するだけで日にちが入るようにしました。 ところが仮題 平成23年5月 ○○営業所と入力されている年月を自動的に変換できないのです。 5月計も自動的に変換できません。 どちらも一つのセルに入っています。 変換できる方法がありましたら教えてください。 よろしくお願いします。

  • EXCELで複数のシートの日々の累計

    初めて投稿いたします。 とても困っているので、どうぞ宜しく御願いします。 エクセル2000で、1つのBOOKに一ヶ月分の日報のシートを作成しました。 各シート名は、6月1日、6月2日、6月3日~6月30日となっています。 例えば、 この6月2日のシートのC1に6月2日の売り上げを手入力すると、このシートの E1に前日(6月1日)の売り上げ(6月1日シートのC1)+今日(6月2日)の売り上げ =累計が計算されるようにしたいのです。 月によって、営業日数が違うので、もう一枚シートを作成して、そのシートのA列に 営業日数分のシート名(6月1日、6月2日・・・)を縦に羅列し、それを読んでその名前のシートの売り上げ(C1)を読んで、当日の売り上げと累計していきたいのです。 初日は、当日の売り上げが累計値となり、 2日目は、1日目+2日目の値 3日目は、1日目+2日目+3日目の値となるようにしたいのです。 似たような質問をされているのを探して、いろいろと試してみましたが、 関数もVLOOKUPやIF等の簡単なものした使用したことがなく、うまくいかないのです。 どうか、詳しく教えていただけると、助かります。 宜しく御願いします。

  • Excel関数 シート内の全ての相対参照の計算式をいっぺんに絶対参照に変えたい!

    こんにちは。Excel関数についてお聞き致します。どうか教えてください。 仕事でたくさんのデータを扱っているのですが、 月ごとの売上げデータの累計表や集計結果などを利用して報告書を作成しています。 各月の売上げシートを元に作成した累計表や統合表を作った後で、数式を相対参照にしてしまったことに気づきました。 累計表のある一つのセルに「=SUM(1月売上げ!A1,2月売上げ!C1)」という計算式があるとします。そのセルの他にも参照しているセル番号は異なっているが同じ計算式が入力されています。 私は、上記の計算式を「=SUM(1月売上げ!$A$1,2月売上げ!$C$1)」という絶対参照に変えたいのです。他のセルにも同様に絶対参照記号をつけたいのです。 ところが、検索置換しようとしてもできないし、 ある一つのセルを絶対参照に変えてそれを他の全ての計算式にもオートフィルで反映させようと思っても、できません。絶対参照のマークが就いていない相対参照のときは、オートフィルで他のセルにも反映できるのですが、絶対参照の計算式を他のセルにも反映させようとしてオートフィルを使うと、全てが全く同じ計算式になってしまいます。 絶対参照なので、当たり前なのかもしれませんが、、 少々言っている意味が分かりにくいかもしれませんが、、 相対参照を絶対参照に変える作業は、一つ一つ手入力および一つ一つセルをクリックして絶対参照にしたい数式の部分にカーソルをもっていきF4を押す事でしか、絶対参照にできないのでしょうか(一つ一つ手作業でしか絶対参照に変えられないのでしょうか?)? 書店でExcelの関数やVBAの本にいくつかざっと目を通したのですが、いっぺんに絶対参照に変える方法はありませんでした。

  • Excel・計算式が自動的に入力?

    Excel2000で、計算式を使っています。   A    B   C   D    1月1日  20  10   2 1月2日  15   5   3 1月3日  28   7   4   ・    ・   ・   ・   ・    ・   ・   ・ 単純に、DのセルにはB÷Cの計算式を入れています。 最初のうちは、毎日BとCを入力した後に、一つ上のDのセルをコピーしてDに計算結果を出していたのですが、何日か経つと、BとCを入力しただけで、勝手にDにB÷Cの計算結果が入るようになりました。 特に何か設定した記憶はないのですが、この状態、私は何らかのExcelの機能を勝手に使っているのでしょうか?

  • Excelのシートをまたがる入力の数式・関数

    Excel2003で、次のような内容を作る場合 セルにどのような数式・関数を入れたらよいのかがわかりません。 教えていただけますようお願いします。 ***** Excelの同じブックの中で、 複数のシートに内容を転記したい。 例えば、フォームとしては シート1を納品書、シート2を請求書、シート3を検収書 などとした場合、 品名や金額など共通する内容を それぞれのシートにコピーする。 その際、シート1の品名や金額が空欄の場合は、 シート2、シート3も空欄にする。 (0などが残ってしまわないように) *****

専門家に質問してみよう