[[20110508141418]] 『シート間のコピーについて』(KJS) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シート間のコピーについて』(KJS) Excel2003 WindowsXP

お世話になっています。

[[20110426231753]] で個人用の集計表を作りましたが一括集計表を作りたいのです。関数でシート間のコピーの方法を教えて下さい。

シート 1 に下記を表示したい (シートは、現在 47 まで有ります)

		      B	              C	              D               E	              F	              G               H
	3	シート3  Y1	シート3  X38	シート3  Y38	シート3  Z38	シート3  AA38	シート3  AB38	シート3  AA3
	4	シート4  Y1	シート4  X38	シート4  Y38	シート4  Z38	シート4  AA38	シート4  AB38	シート4  AA3
	5	シート5  Y1	シート5  X38	シート5  Y38	シート5  Z38	シート5  AA38	シート5  AB38	シート5  AA3
	↓	↓	↓	↓	↓	↓	↓	↓
	47	シート47 Y1	シート47 X38	シート47 Y38	シート47 Z38	シート47 AA38	シート47 AB38	シート47 AA3

	B1に年月を  [2011年5月]  と表示したい     シート3の    A2とB2の結合セルに [2011]     C2に  [年]    D2に  [5]    E2に[月]    が有る							

「各セルには下記関数が入ってます」

	シート3〜47のセル   Y1   =MID(CELL("filename",$A$1),FIND("]",CELL("fileneme",$A$1))+1,31)       「各個人名」			

	シート3〜47のセル  X38   =(SUM(X6:X36))*24     「事故時間」       			

	シート3〜47のセル  Y38   =(SUM(Y6:Y36))*24     「定時間」			

	シート3〜47のセル  Z38   =(SUM(Z6:Z36))*24     「残業時間」			

	シート3〜47のセル AA38  =(SUM(AA6:AA36))*24    「休日時間」			

	シート3〜47のセル AB38   =(SUM(AB6:AB36))*24    「深夜時間」			

	シート3〜47のセル  AA3   =W3-Y3           「有給休暇残日数」		

   未入力及び (0.00) は空白とする			

   新人の入社・退職者等での人員の増減にも対応したい (最大50名まで)

   宜しくお願いいたします。


 A列にシート名を置けるとして、
 B3=INDIRECT(A1&!"!Y1")
 として B2以降にコピーをしておけば、A1のシート名が変われば参照先が変わると思います。
 C列以降はアドレスの部分を手で変えて同様の処理を行う必要があります。

 参照先(Y1など)をどこかに記載できれば、もう少し簡便化できます。
 例えば、先頭行に1列挿入して参照先(Y1, X38, Y38....)を記載しておけば
 B4=INDIRECT($A1&!"!"&B$1)
 のようにして表全体(B4:H50)にコピーすることも可能です。
 (1行目を非表示にしておけば、見た目は前と変わらないようにもできます。)

 参照先を別シートにしたり名前定義を使ったりと、工夫の余地はありますが、
 まずは INDIRECT の使い方を調べてみてはどうでしょうか。
 (Mook)


(Mook) さん ありがとううございます。

やってみます。

(KJS) 2011/5/9 10:40 


 (Mook)さん  私の説明が悪かったのかエクセル初心者なので解決できません

 個人用のシートが (シート3) 〜 (シート47) まで45枚有ります。シートの名前を仮に (シート3) 〜 (シート47) とします。
 この集計表を使用する時に各個人の名前に直します(人員の増減を考慮して)
 各シートの名前をそのシートの[Y1]のセルへコピーしています。 [Y1] セルは  [Y1:AA1] の結合セルです。
 各シートのその名前を (シート1) の [B3] [B4] [B5] ・・・・ セルへ表示したいと思っています。  (シート2)は個人用シートの原紙とします。

 >A列にシート名を置けるとして ・・の意味が解りません。
 B3=INDIRECT(A1&!"!Y1")  B2以降にコピーしておけば ・・の所も解りません。
 大変申し訳ありませんが、初心者の私でも解るように教えていただけませんか?
 わがまま言ってすみません。
 (KJS)  2011/5/9    20:55
  
    


 まずは INDIRECT をヘルプやネット検索で使い方を調べてみたでしょうか?
 まずは自分で調べることを習慣にすると理解が変わってくると思います。

 セルの指定方法として
 =A1
 がA1セルの参照をしているはわかると思います。

 他のシート(例えばSheet2)のシートのA1を参照するには
 =Sheet2!A1
 とするのはわかるでしょうか?

 INDIRECT はその中で記述した文字列を参照形式として実行するものです。
 ですから生成された文字列が
 シート名!セル位置
 という文字列にして
 =INDIRECT(シート名!セル位置)
 となるような式にしているのが先の回答です。

 他のシートを参照するにはどうしてもシート名が必要です。
 ここは、あきらめてすべてのシート名をB列に列挙してください。
 ただし、シート名を変更せずに Sheet2 〜Sheet50 として使用しており、
 変更する可能性がないのであれば、

 B3=INDIRECT("Sheet"&ROW(A2)&"!Y2")
 とすることで参照できます。
 ROW(A2)はセルの行数を返す関数ですから上記は
 =INDIRECT("Sheet2!Y2")
 と解釈されて実行されます。

 数式を理解するには、中がどのような値かを具体的にイメージして、理解していくと
 良いと思います。

 全部は説明しきれませんので、とりあえずこのあたりまでを理解した上で、先の回答を
 再度読んでみてもらえるでしょうか。

 そのうえで不明な点を、具体的に聞いてもらえると、いろいろと回答が得られると思います。
 (Mook)

 (Mook)さん  ありがとうございます。もう少し頑張ってみます。
 (KJS)  

 >各シートのその名前を (シート1) の [B3] [B4] [B5] ・・・・ セルへ表示したいと思っています。
 でしたら、まずはこれを単独で調べてみられると良いと思います。

 B列の数式と、C列以降の数式を分けて考える。
 B列にシート名さえ表示出来れば、C列以降は Mookさんが書いて居られる様に
 INDIRECT関数で出来ると思いますので。 

 似たような過去ログが見つかりましたので、ご参考に。
[[20040712163424]] 『複数シートのシート名と特定セルの内容をリストに』(taka)

 (HANA)

 EXCEL 初心者と自称されているので、不向きかもしれませんが
 マクロを使用すればシート一覧を作成することも比較的簡単な作業です。
http://www.relief.jp/itnote/archives/000960.php
 マクロと聞くと拒否反応・・・というようでしたら、無視してください。

 ご参考までに。
 (Mook)

 (Mook)さん (HANA)さん  大変親切に教えていただきありがとうございました。
 マクロは全然解りませんので 上の説明と過去ログを参考にして私の考え通りに出来ました。
 関数の中身(意味)が解ってないので少しずつ学習したいと思います。
 <感謝です>
 (KJS)  2011/5/11    21:30

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.