• 締切済み

EXCELで工場別人数を出したい(VBA使用で)

ファイル2のSHEET1に社員名簿で B2からB1200に社員番号順ですので工場名(16社)がバラバラにあります。B1200は、日々かわります。入社、退社があるためです) ファイル1のSHEET1に集計表で A3からA18までに工場名があります。 B3からB18に、各工場別の人数を表示させたいのです。 ファイル1のSHEET1の例    A    B 1 東京工場 345 2 大阪工場 256 3 長崎工場 125 現在は、COUNTIF関数で行なっていますがファイルを立ち上げたときに 自動で処理がしたいのです。 ファイルを呼び出すまでは出来たのですが… 力を貸して下さい。宜しくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

「このブックには、ほかのデータソーズへのリンクが含まれています」と言うメッセージを出したくないのならば、メニューの[編集]-[リンクの編集]-[起動時の確認]で『メッセージを表示しないで、リンクの自動更新も行わない』を選択して上書き保存で出なくなります。 で、かんじんの処理ですが…… 現在のCOUNTIFが設定されているブックでやりたいことが出来ているんですからそのまま使いましょう。マクロはファイルを立ち上げ時にリンク元を開くだけにしておいては如何ですか? 1.マクロの記録で、以下の操作を記録します。  1-1.[編集]-[リンクの編集]-[リンク元を開く]  1-2.開かれたリンク元(ファイル2)を閉じる。 2.記録されたマクロをAuto_open() にコピー。 なお、ファイル1を他のユーザが開いている時などのエラー処理は一切入っていませんのでその辺はご自分で考えてみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>COUNTIF関数で行なっていますがファイルを立ち上げたときに, 自動で処理がしたいのです エクセルの関数こそ、データの変更に対し即座に反映してくれるもの(仕組み)です。だからこれはは認識相違でしょう。 式の組み方が適当でないのではないですか。 データが増えても式を変更しない式はどうしたらよいか、質問したら。#1で式を知りたいと書いておられるのは、そのことを検証しようとされているのかも知れない。 ーー VBAこそ毎回実行しなければなりません。Changeイベントやファイルオープン時というイベント時に実行させることは可能ですが。 勉強したてで、VBAがやりたくてでょうが無いのかな。 ーーー VBAでも関数を使う以外での、多他項目の1回読みでの集計ロジックは、意外に難しいものですよ。アルゴリズムを常時考えている人で無いと難しい。 中間的に、工場名でデータをソートして、区切りまでの件数を数えるのが、ロジックとしては簡単。 そのほか、各(行)レコードで、工場名リストの該当行を調べ、件数を+1する方法などは単純なロジックでしょう。

steppy2
質問者

お礼

ご回答ありがとう御座います。 単純な方法ではありますが解決しました。 ご指摘、ご指導ありがとうございます。やはり当方の勉強不足ですね。

全文を見る
すると、全ての回答が全文表示されます。
  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.2

>ファイルを呼び出すまでは出来たのですが… VBAでこの後どういう処理をするイメージで考えているのですか? ファイルも開けるし、COUNTIF関数で集計可能なら、ファイルが開いたら、Sheet1のB1、B2、B3セルにそれぞれのCOUNTIF関数を(VBAで)入力する・・・ではだめなのですか?

steppy2
質問者

お礼

Range("B3").Select ActiveCell.FormulaR1C1 = "=COUNTIF([名簿.XLS]Q_SHEET1!R2C2:R1130C2,RC[-1])" これを書き込み対応しました。 ありがとうございました。

steppy2
質問者

補足

1.集計表を開く 2.裏で名簿が開く 3.名簿の工場名を元に、集計表の工場別に人数を表示する これだけのことなんですが… VBAで関数を入力するでも構いません。 COUNTIF関数を集計表に入れたままでは、「このブックには、ほかのデータソーズへのリンクが含まれています」と毎回、表示が出てしまいます。

全文を見る
すると、全ての回答が全文表示されます。
  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

COUNTIF関数で行っている、という数式を提示してみてください。

steppy2
質問者

お礼

ありがとう御座います。 B3のセルの書式です。 =COUNTIF([名簿.XLS]Q_SHEET1!$B$2:$B$1200,A3) こんな感じですが…

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

関連するQ&A

  • エクセルで時間帯の人数

    エクセルに A B C 1名前 8:00 17:00 2名前 8:00 18:50 と50人分の入退場が入力されています 別枠に 17:00までいた人の人数 18:00までいた人の人数 18:30 19:00 と出したいのですが countifで作ると 18:00までとすると 18:50に退場した人の人数が カウントされません。 詳しい方教えて下さい!

  • エクセルで項目ごとに新しい別のシートにしたい

    エクセルで名簿を作成しています。 C列に生徒番号、D列に氏名、E列にクラスがAからFまでランダムに入っています。 この名簿を新しいファイルに、クラスごとに別のシートにしたいです。 できればシート名も「A」「B」となっていれば助かります。 A,B列にもデータが入っていますが、今回は生徒番号、氏名、クラスのみの ファイルにしたいです。 良い方法を教えてください。よろしくお願いします。

  • 進路希望の志望別人数

    中学校の教師をしております。 3年生の進路希望を集計しているのですが、以下のように希望をとって入力しています。    公立第一希望 公立第二希望 私立第一希望 私立第二希望 A男   101    102    103    104 B男   102    201    501    105              ・              ・              ・ 学校名は、コードを振って整理しています。上の数字は、コード番号です。 そこで、希望ごとに人数を集計したいのですが、高校に振ったコードが200以上もあるため、   (1)希望のある学校のみ、抽出してカウントしたい   (2)公立第一、公立第二、私立第一、私立第二それぞれで希望している人数をカウントしたい          第1希望     第2希望    A校(101)   4         1        B校(102)   0         3 Countifでは行数が増えすぎて使いにくい。DCOUNTでも作業が面倒走なので・・・。 いい方法がありましたら、是非教えていただきたいのです。 よろしくお願いします。     

  • 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での集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • Excel countIFについて

    sheet1に A1に1 A2に2 A3に3 A4に4 A5に5 B1に5 B2に7 B3に9 B4に10 B5に5 図としては A|B| ―╂―╂ 1|5| 2|7| 3|9| 4|10| 5|5| こんな感じで、Bに、はいってる数字は、1から10までの乱数だとします。 それを、countifを使って、 別のシートに(sheet2) sheet1のBの、5、7、9、10、5の中に集計すると sheet2に、 (下記の、Aは、A1、Bは、B1、4はA5と、A1から、あわせて、セルを省略せずに書いてます) A|B ―╂― 1|0 2|0 3|0 4|0 5|2 6|0 7|1 8|0 9|1 10|1 とこんな感じに集計したいのですが、COUNTIFを用いる時、どんな関数たてればいいでしょうか? ちなみにsheet2の1~10は普通に打ち込んだ数字です。 ちなみに、XPのExcel2003です。 良かったらご意見くださいm(_ _)m

  • EXCELで別シートを参照する計算式

    こんにちは。EXCEL2002を使用しています。 1つのファイルに個人別シートと集計シートがあり、個人別のシートのシート名は個人の 名前を付けています。(集計)(田中)(鈴木)(小松)・・・と言った感じです。 個人のシートのフォームはまったく同じ表が作られていて、 集計シートのA列に名前、B列に下記のように計算式を入れています。   A    B 1 田中 ='田中'!$D$1 2 鈴木 ='鈴木'!$D$1 3 小松 ='小松'!$D$1 このような場合、A列にシート名と同じ名前が入っていた時に ='(集計シートのA列)'!$D$1 のような計算式で参照させる事は出来ますか? シート名を置き換えすることなく、同じ計算式が使えると良いのですが。

  • EXCEL 期間を指定しての人数の集計

    EXCEL初心者です。下記よろしくお願いします。 EXCEL2007です。 シート1に A列 (入所日)  B列(退所日)   C列(人数) 2013/4/15    2013/5/14     5 2013/4/17    2013/5/16     8 2013/4/20    2013/5/19     12   シート2に A列(将来の日付)        B列 2013/4/15            5 2013/4/16            5   2013/4/17            13   2013/4/18            13 2013/4/19            13 2013/4/20            25 2013/5/14            20    2013/5/15            20     2013/5/16            12 2013/5/17            12 2013/5/18            12 2013/5/19            0      シート2のA列は連続の日付です。 シート2 B列にその日の在籍者の人数を表示させたいのですが どのような関数を使えばよいのかわかりません。 研修センターで、先々の人数の把握をしたいのですが集計に手間取り困っています。 よろしくお願い申し上げます。    

  • Excelでシートをまたぐ場合の複数条件セル個数COUNTについて

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1210558を見たのですが、 データがシート名Aにあり計算値をシート名Bに出したい場合どうしたらよいでしょうか? この質問を引用させて頂いて、 シート名Aにこのように入っていて、 ___A B 1 ○ × 2 × ○ 3 ○ ○ シートBに A=○かつB=○の個数を集計したいのですが可能でしょうか? イメージとしてはCOUNTIF(A1:A3,"○") AND COUNTIF(B1:B3,"○")という感じです。 (私の場合○の部分はセル参照をしています) SUMPRODUCT関数でシート間参照してみたのですがうまくいきませんでした。 私のやりかたが間違っているのだと思います。 お詳しい方いらっしゃいましたらよろしくお願い致します。

  • エクセルでの集計

    エクセルで基本給の集計をしています。 A列に役職名、B列に金額を入力しています。 この場合に課長分の金額だけを計算するにはどうすればよいですか? =COUNTIF(A1:A115,"課長") で、課長の人数を出すところまでしか分かりませんでした。 どなたかよろしくお願い致します。

  • EXCEL VBA 社員名簿印刷したい

    お世話になります。 EXCEL VBAを使って社員名簿を印刷したいのです。 データというシートに社員情報が入っています。(可変ですが100名ほど) このシートに[印刷]というボタンを配置してこれをクリックしたらSheet1の様式にあてはめて 社員人数分印刷をしたいのです。 どのたかお知恵をおかりできますでしょうか? よろしくお願い致します。 EXCEL2013

専門家に質問してみよう