• 締切済み

エクセルで同じ様式のファイルを集計するには「VBA

某会社の総務系の者です。 エクセルのsheet1に以下のような5行、4列の表を作り(課の名称もA1セルに入れてもらいます)、80個ほどの部署にそれを送り入力してもらい、それをこちらで1枚のシートに集計することになったのですが、困っています!どうかお力を貸してください。m(__)m ○○課            21年度   22年度   23年度   「あああ」の人数 「いいい」の人数 「ううう」の人数 「えええ」の人数 集計シートもこちらで作るので決められた様式はありませんが、集計したい項目としては、組織全体(80個ほどの部署)の21年度、22年度、23年度ごとの「あああ」「いいい」「ううう」「えええ」それぞれの合計人数です。 VBAを使うとするとどのように書けば良いでしょうか? ファイルを開くのも、課ごとにデータを取得するのも自動でできたらなと思っています。 なお、私は、各部署に送るファイルのsheet2にsheet1の表に入力してもらったデータを以下のような横長の2行に飛ばそうかと考えています。(素人意見なのでわかりませんが、VBAで処理をするにしてもsheet1から直接よりもそのほうが集計がしやすいうよいな気がするので。)      21年度     22年度      23年度     21年度     22年度   23年度・・○○課 あああの人数 あああの人数   あああの人数 いいいの人数 いいいの人数 いい・・ どうか、よろしくお願いいたします!      

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

vbaのコードを作ってくれというのは、甘えすぎ。 VBAの基礎知識も無いのだろうから。それぐらい勉強してから質問するものだ。 さらにこの課題は、上級の(市販の解説書には書いてない程度の)課題だと思う。 誰か詳しい人は回りに居ないのか。 ーー 別シートにデータ有り、でも難しいが、データのあるブックが別になっていることが難しさを増やす。 エクセルの処理は、別シートや別ブックになっていると途端に難しさを増す。式の複写などもやりにくい。 1つのフォルダに集めるぐらいは、してあった(出来た)ほうが後々考えやすいかな。 表の形式を統一(同一の性格のデータの行と列=セルは同じ番地にある)することは出来るのかな。 ーーー 「あああ」なんて抽象的に書かず、例示したほうが読者にはイメージが伝わって、わかりやすい。 ーー 集約シートをvbaで作る手もある。それには同一フォルダ内のブック80になっている必要がある(VBAコードの簡単のために)。 Googleででも「vba フォルダ エクセルファイル 捕捉」で照会すれば記事が沢山出る http://okwave.jp/qa/q2628818.htmlほか多数。 そのブックを1つとらえたら、ブックを開いて、そのSheet1なりにデータ部分を見つけ、集約シートに課の列を作って、課をセットし データ部を貼り付けて、それを80ブック回繰り返し、集約データを1シートに作る。 その後は関数を勉強して、件数合計は出せるのでは。 ーー エクセルのバージョンを書いて質問すること。常識。COUNTIFSなどが使えるかどうか左右される。これも知らないようだということは関数の経験も少ない? 多分集約シートが出来れば、「課}+「あああなど」の2条件指定の、街頭行の計数の和を出す ーーー 当面は80回のコピペをするほか無いのでは。 やってみると、思ったより早く終わると思うよ。 VBAなんて自分の思うとおりに出来るようになるまで何年かかるとおもう? === エクセルの機能の「統合」「3D集計」「ピボットテーブル」など、別シート、別ブックデータになっても使えないか、勉強してみるのもありと思う。 Googleででも「エクセル 別シート 集計」で出てくる記事を読んで使えないか勉強したら。

qazxcvfr4
質問者

お礼

ありがとうございます。 エクセルはけっこう得意です。 関数は詳しいです。 VBAの本は2回ほど読みましたが、まだわかりません。 そんな状態です。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>集計したい項目としては、組織全体(80個ほどの部署)の21年度、22年度、23年度ごとの「あああ」「いいい」「ううう」「えええ」それぞれの合計人数です。 わざわざマクロなど使わずとも,単純な足し算の式だけで集計できます。 手順: 各部署から送り返されてきたそれぞれのシートを,1冊の集計用ブック(シートの1枚目に集計表)に合計80シート束ねる #ブックからブックにシートを移動するには  2つのエクセルを1つのエクセルの中で同時に開いておき,  片方のシート名タブを集めたいブックのシート名タブの並びにドラッグする または  シート名タブを右クリックして移動又はコピーを行い,移動する 集計シートで「3D串刺し参照」を使い,合計する 参考: http://kokoro.kir.jp/excel/3d.html

qazxcvfr4
質問者

お礼

ありがとうございます。 ただ、マクロを使わない方法なら別にあったんですね。。 それで処理しました。

関連するQ&A

  • VBAで集計ファイルを作りたい

    今、VBAで一つの集計ファイルを作成しています。 集計ファイルは、Sheet1・Sheet2の二枚のシートで構成されています。 このファイルには、ある二つのファイルにデータを流し込むために、 Sheet1には二次元配列(表)にデータを入力し、Sheet2には二つのファイルのパスを指定する仕様になっています。 集計ファイルは、「集計」ボタンをクリックした際に二つのファイルにデータを流し込む仕様です。 この二つのファイルへのデータ更新は、一回で済ませたいと思っています。 ファイルを開いてデータ更新→ファイルを閉じる・・という処理を 二回繰り返して二つのファイルにデータ更新をかけたいと思っています。 ある程度までは、作成できたのですが今行き詰っています。 サンプル程度でよいので、お手本になるスクリプトのアドバイスを頂けたらと思います。 初心者ですので、質問がわかりづらかったらすみません。。。 お力添えをお願い致します。

  • エクセルで集計について

    それぞれの課がそれぞれに使いやすいように 個々に作っている表資料の中から、 必要な数値を、自分のエクセルファイルに 流用したいのです。 現在は、プリントしたものを持ってきてもらって、 自分で手入力して自分の表で集計しています。 自分のエクセルファイルは、集計です。 (1)集計ファイル (2)集計ファイル (3)集計ファイルから、 ある部分の数字を自分のエクセルシート上に 反映させたいのです。 できれば、(1)から(3)の人たちが入力し終えたら、 自分のエクセルシートには、3つの数値を用いて、 合計された数値が表示されている状態にしたいのです。 あと、自分の集計しているものは(1)から(3)の人たちには、 みられては困ります。また、(1)(2)(3)それぞれの人も自分で作った表以外は見れないようにしたいのです。 これは、個別の尊重でデータの混在を防ぐためです ですから、同じワークシートというわけにはいかないと 思いますが、いかがでしょうか? でも、私だけはこの3者の集計表をみたいのです。 さらに、私の集計表だけは、3者が入力し終えたデータから必要な数値だけを抜き取り集計したいのです。 これをするには、(1)から(3)に方は、 それぞれの集計表ではなく、私が用意したシートで 入力していただくことになるのでしょうか? 何か良い方法はありませんでしょうか? 経験者の方、よろしくお願いいたします。

  • EXCEL VBA 別シートへデータ集計

    お世話になります。 EXCEL VBAを使って下記のことを実現したいです。 [やりたいこと] [データ]シートに社員情報が4人分入っています。(本当は可変です) [データ]シートに"集計"というボタンを作ってクリックするとVBAが動いて[集計]という シートにデータを集計したいのです。この[集計]シートのフォームが少し変わっていて一人に つき3行使用します。次の人はまた3行、また次の人は3行と繰り返していきたいのです。 上記やりたい事を画像にもしてみました。 上記動作を実現するVBAコードをどなたかご教授いただけませんでしょうか? 何卒よろしくお願い致します。 環境 EXCEL 2017 Win7

  • excel vba DATAの日集計

    excel vba DATAの日集計 いつもお世話になっています。 "DATA"シートのセル"D2"の日付を変えると表の数値が変わるようにしています。 その日毎のデータを"集計"シートの日別の表に飛ぶようにしているのですが、 1日分の転記するセル数が多く、Select Caseで31日分のコードを書くと、あまりにも プロシージャーが大きくなります。(Case1からCase31・・・結果分割してますが) FOR NEXT なのかな~、もっと効率のいい書き方がありましたらよろしくお願いします。 例:"集計"シート1日分は、9行となります。それぞれ"DATA"シートからの転記です。"DATA"シートのF5+F10,G5+G10~AC5+AC10までそれぞれの値を"集計"シートのG5からAD5まで、F6+F12,G6+G12~AC6+AC12までそれぞれの値を"集計"シートのG13からAD13までといった具合です (日の9行はそれぞれ決まったある行とある行の加算です、これが31日分の行があります) Sub macro() Dim myrng As Range Dim c As Range Set myrng = Sheets("DATA").Range("D2") For Each c In myrng Select Case c.Value Case 1 '1行目 Sheets("集計").Range("G5").Value = Sheets("DATA").Range("F5") + Sheets("DATA").Range("F10") | | Sheets("集計").Range("AD5").Value = Sheets("DATA").Range("AC5") + Sheets("DATA").Range("AC10") | | '9行目Sheets("集計").Range("G13").Value = Sheets("DATA").Range("F6") + Sheets("DATA").Range("F12") | | Sheets("集計").Range("AD13").Value = Sheets("DATA").Range("AC6") + Sheets("DATA").Range("AC12")

  • Excel VBAでの集計マクロについて

    添付画像のような感じで、 C列に存在する同じ列名の数だけE列の数字を足して 合計値を横並び表示させたいのです 出力はGetOpen(?)から既存ファイルを開き、 2行目からデータを集計していきたいです(1行目のデータは固定値(入力済み)) 同じ記号が含まれている文字列(△1~△5)は足して出したいです VBA、まったくの未経験者ですのでご教授のほどよろしくお願いします

  • エクセルVBA 集計

    事情がありピボットテーブルを使用しないで実現したいです シート1のドロップダウンリストで集計したい項目を2つ選択(15項目中) 例えば、項目1が色、項目2が形と選択 シート2に500件程(数が増える)のデータがあり、シート3へ集計 (シート3)  A | B | C | D |・・・・・・ 1|色|数|形|数|・・・・・・ 2|赤|30|○|10| 3|青|20|△|20| 4|白|40|□|30| 5|黄|40| ・ ・ シート1で設定した項目1でシート3の1行目を参照し、合致したデータをシート4のA列、B列に貼り付け シート1で設定した項目2でシート3の1行目を参照し、合致したデータをシート4の1行目、2行目に貼り付け 数値は例えばC3なら赤で○のものを表示 (シート4)  A | B | C | D |・・・・・・ 1| |   形  |・・・・・ 2| | |○|△|□| 3| |赤|20|10|16| 4|色|青|10|15|23| 5| |白|14|15|35| 6| |黄|17|15|35| ・ ・ このような感じでシート4を作るVBAをご伝授ください。 シート1、シート2、シート3は出来ているので大丈夫です。 稚拙な説明ですいません。 よろしくお願いいたします。

  • エクセル入力で項目別に複数シートに自動入力のやりかたを教えてください!

    エクセル初心者です。今とっても困ってます! シート1では1つの会社の全ての売上を入力しています。  シート1  売上表には コードで部署名が出るようにしています。  シート2~シート9までを総務課・税務課などの部署でわけてます。   例)シート2・・・総務課 シート3・・・税務課 ・・・ など そこで、教えてほしいのですが、シート1に入力すると、入力された部署のシートに自動でデーターが入力出来る方法がわかりません。   シート1(入力するシート)    B     C    D   E   F     G  H 11) コード・ 部署名・ 日付・伝番号・商品名・ 車番・担当者  例)  1   総務課  3/1   001 ガソリン 0000  佐藤     2   税務課  3/2   010  軽油  1111  森     1   総務課  3/5   100 ガソリン 2222  山口         といったようなかんじで毎日入力していきます。そこで シート2(総務課請求書)     C    D   E      F    G 9   日付・ 伝番・ 商品名・  車番・  担当者  10   3/1  001   ガソリン  0000   佐藤 11   3/5  100   ガソリン  2222   山口 といったように入力されたらうれしいのですが・・・ シート1に例のような入力したら、シート2の総務課シートにも自動で内容が入力される方法を、おしえてください。 どのような方法がありますでしょうか? 出来ればわかりやすくお願いしたいのですが、よろしくお願いします! 追伸 VBAは全然勉強してないのでわからないのですが・・・ あと、今自分でがんばってシート1からシート2に自動入力はIF関数で出来たのですが、セル番号を関数に入力しているので、例えば総務課のシートで3/1のデーターと3/5のデーターの間に空欄ができてしまいます。理由はその間に税務課のデーターがあるからなのですが、税務課のシートをみてみると、1列あいて入力されました。この空白の列を無くす方法ってありますか?素人なので、説明がわかりにくいと思いますが よろしくおねがいします。。。  

  • エクセルVBAで別ブックを参照してDSUM

    エクセルVBAで別ブック(閉じてる)を参照してDSUMをしたいです。 インターネットや本等で調べたのですが、全然分かりませんでした。 何卒、よろしくお願い申し上げます。 【前提】 ・エクセルファイルが2つあります。 1つ目は「DB」ファイル(Cドライブ直下)。 2つ目は「表示」ファイル(デスクトップ上。「DB」ファイルとは別の場所)。 ・「DB」ファイルの仕様は、Sheet1に以下のとおりです。 A列:会社(1行目には、会社と記載して2行目以降に値) B列:部署(1行目には、部署と記載して2行目以降に値) C列:氏名(1行目には、指名と記載して2行目以降に値) D列:金額(1行目には、金額と記載して2行目以降に値) ※値(データ)の行数は、数万行となる見込みです。 【実現したいこと】 ・「DB」ファイルのSheet1のデータを、DSUM関数の”データベース”として、 金額を集計して、「表示」ファイルで集計・表示させたい。 ・なお、DSUM関数の"条件"としては、会社と部署と氏名の3つとしたい。 ※具体的には、「読み出し」ファイルのSheet1のセルA2に会社を、セルB2に部署を、 セルC2に氏名を入力できるようにる。 それらすべてをAND条件として、金額を集計させたい(金額の集計は、セルD2に出力)です。 以上の内容で考えています。 ひとつのエクセルファイルで作成してみたのですが、データが数万行もあるため、容量が非常に大きくなってしまいます。 集計結果(集計条件を変更させて確認できる状態)は、複数メンバーで共有したいと思っています。 エクセルのVBAで上記のことを実現できないでしょうか。 Accessは、自分含め他のメンバーも知識が乏しいため、避けたいと思っています。 よろしくお願い申し上げます。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • エクセルのファイルの名前の変更が出来ません

    エクセルで売り上げデータの集計をしています。 「売り上げ集計」というフォルダに2003年度、2004年度、2005年度、売り上げデータ入力、分析表、在庫管理、等のワークシートが入ってます。 在庫管理を仕入れデータと名前を変更しようとすると「拡張子を変更すると、ファイルが使えなくなる可能性があります」と表示されます。 初心者でどうしていいか分かりません。 どうしたらいいか教えてください。 よろしくお願いします。

専門家に質問してみよう