• 締切済み

excel で複数のシートの特定のセルを、一覧表に

excel で従業員40人ぐらいの勤務状況を1人1か月1シートで管理しています。 各シートの、出勤日数、勤務時間の部分のセルを、 別に1枚まとめのシートを作って従業員全員の一覧表を作りたいのですが、 計算式を教えてください。

みんなの回答

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

関数では、あまり良い方法とならない。 エクセルの関数がなぜ重宝されるか考えたこと在りますか。 関数の種類が多いとか、使わせてくれる(MSが作った)関数が、多くのニーズ利用にマッチしていることももちろんあります。 しかし最大の理由は、式を入れるのは1セルで、式の複写によって、(他のセルでは)適当に式の番地などを変えてくれるという点が大きいと思う。 この点を注目してますか。 ーー 本質問の件では、普通の式の複写によっては、シート名が変化しないことです。 それの苦しい打開策は、各人(=各行か)にデータのあるシート名を1度入力して、それを使い、INDIRECTをつかうなどしてできる。 また列変化に伴って列を変化させるのも苦労するだろう。 私ならVBAで始からやるが、INDIRECT関数でやろうとして、VBAなど使っていて苦しい。 もっと良い回答が出れば、そちらを勉強してください。 例 元データ各人用3シート 田中 Sheet2 1,2,3は日付のつもりの整数だが、本当の日付(日付シリアル値)が入っている場合は工夫を要す。 日付 1 2 3 aa 12 13 14 ーー 大山 Sheet3 日付 1 2 3 aa 23 56 13 ーー 木村 日付 1 2 3 aa 5 16 27 ーーー 集計したシートを作る 集約表の1つ Sheet1(aa行のみ、まとめている) 田中 Sheet2 大山 Sheet3 木村 Sheet4 ーーー 標準モジュールに Function rk(n) a = Cells(1, n).Address(1) c = Split(a, "$") rk = c(1) End Function ーーー Sheet1のC2 =INDIRECT($B2&"!"&rk(COLUMN()-1)&$B$1) E2まで式を複写 C2:E2を下方向に式複写。 ーー 結果 項目 3 1 2 3 田中 Sheet2 12 13 14 大山 Sheet3 23 56 13 木村 Sheet4 5 16 27

7oku7oku
質問者

お礼

ありがとうございました。 

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

A列にシート名を入れといて、 B列は、 B1:=INDIRECT(A1&"!$B$2") 以下コピペ とかってすると、列挙したシート名のシートの、$B$2セルを抜き出せるとか。 PC Online - INDIRECT:インダイレクト【文字を「参照先」に変換する関数】:Excel関数 早わかり http://pc.nikkeibp.co.jp/article/technique/20080625/1005458/

7oku7oku
質問者

お礼

ありがとうございました。

回答No.1

一覧表の該当セルに =シート名!セル番号 と入力すればいいだけです。 慣れるまでは、セルに「=」(半角です)を入れた後、参照したいシートの参照したいセルをクリックすれば上記のような式が自動で入力されます。 めちゃくちゃ基本中の基本なのでぜひ覚えてくださいね。

7oku7oku
質問者

お礼

ありがとうございました。

関連するQ&A