dポイントプレゼントキャンペーン実施中!

エクセルで社員の売り上げリストと会社全体の売り上げの平均を出しました。
これを、同じブック内で人数分のシートを複製して、
1社員1シートにし、1シート内では該当社員以外の名前は隠して
社員本人の売り上げリストと会社全体の平均のみ表示し、
オリジナルのシートでは全リストを表示したままの状態にするとします。

これで、今後オリジナルのシートに新たに各社員の数値を入力するだけで、
ブック内の各シートにデータが反映されるようにすることは可能ですか?

たとえば、オリジナルのシートに11月の山田華子と松田雄太のデータを入力したら、
それが山田華子のシート、松田雄太のシート、その他にも反映するようにしたいのです。

よろしくお願いいたします。

A 回答 (5件)

個人のシートが、以下の様であれば


A    B       C      D       E ・・・    AH     AI
   4月1週目 4月2週目 4月3週目 4月4週目・・・10月3週目 10月4週目
山田  
平均  
B2セルに =VLOOKUP($A2,オリジナル!$A:B,COLUMN(B2),FALSE)
といれて
下へひとつコピィ、右へコピィしてみてください。
Vlookup関数、Column関数については、Helpで確認してみてください。
全員のシート作ってもかまいませんが、氏名のセルを入力すると結果が表示されます。
氏名のセルには、入力規則でオリジナルのシートの名前を反映させれば、ワンクリック操作ですみます。
もし、2枚のシートでボタンひとつ押せば、各自の結果を順次印刷したければ、VBAでできますので別途質問してみてください。
    • good
    • 0
この回答へのお礼

このやり方でできました!
ありがとうございました!
エクセルはまだまだ奥が深いようなので、
VBAのほうも勉強したいと思います。

本当にありがとうございました!!

お礼日時:2008/10/26 08:14

実例も挙げてないため、一読して、内容を理解できない部分もあるのですが


ーー
エクセルの関数の本質をしっかり理解してください。
エクセルの関数は、データをセットする(受ける)側で、式を書いて
(自分以外の)あそこのセルとあそこのセルのデータで、こうこう処理・計算など、してとエクセルに願い出るカタチです。ですから反映する場所が複数あるとその場所に式をいれる必要があります。セルにキャッチャーがいるイメージです。
突き詰めると
=IF(a1=1,C3=B2,"")
のC3=B2のような書き方が、関数の中で、出来ないということです。
ーーー
しかしVBAだと望みのところにデータを書き込めます。
プログラムコードでは、その回数だけ、コード行を書きますが、
SheetXのA2、SheetyのC6など、決まっておればコードを書くことで
値をセットできます。
他の仕組みもあって、どこへデータをセットするなど割合易しい
(ピッチャーのイメージ)
ーー
それとデータのセットのパターンを捉えると、後は変えるべきものは変えて、コンピュターが繰り返しをしてくれます。
A1,A3,B5,C1に5をセットせよという場合、A1,A3,B5,C1をテーブル化すると
for i=1 to 4
Range(S(i))=3
Next i
で終わりです。しかし関数は各セルに、=a1という式を4箇所入れないといけません。
ーー
そういうことでシートがコピーすれば済むケース以外は難しい。
参考にVBAが必要な理由を説明してみました。
    • good
    • 0
この回答へのお礼

ありがとうございました。
VBA自体を私が理解していないため、今はせっかくimogasiさんが説明してくださったことも、よく理解できていません。
VBAを一度勉強してきてから、またこの質問を閲覧して、imogasiさんの回答をきちんと理解したいと思います。

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

お礼日時:2008/10/26 08:46

No2,3ですが、個人のシートが先のスレでよくて印刷が目的ならオリジナルシートだけでもOKですね。


ツールバーのツール=>マクロ=>VBエディター開いて
挿入=>標準モジュール作成して
Sub Macro1()
Range("A1").Activate
Selection.AutoFilter
i = ActiveCell.Row + 1
Do While Cells(i + 1, 1).Value <> ""
Selection.AutoFilter Field:=1, Criteria1:=Cells(i, 1).Value, Operator:=xlOr, _
Criteria2:="=平均"
ActiveWindow.SelectedSheets.PrintPreview
i = i + 1
Loop
Selection.AutoFilter
End Sub
上記をコピィし閉じます。
VBエディターを閉じて、ツール=>マクロで Macro1 を実行します。
A列にある氏名順で印刷を繰り返します。
一応、印刷プレビューにしていますが、印刷でよければ
PrintPreview の部分を PrintOut に変更してください。
もし1行目などに項目などありましたら
Range("A1").Activate を Range("A2").Activate
などと編集してください。
    • good
    • 0
この回答へのお礼

ご丁寧に印刷方法まで細かく教えていただいて、
ありがとうございます。

VBはまったくわからないので、もう少し勉強してからやってみようと思います。

お礼日時:2008/10/26 08:41

>たとえば、オリジナルのシートに11月の山田華子と松田雄太のデータを入力したら、


>それが山田華子のシート、松田雄太のシート、その他にも反映するようにしたいのです。
VBAの力を借りることになると思います。
例えば、オリジナルシートが
 A   B   C
年月 社員名  売上
08/10 山田華子 1000
08/10 松田雄太 2000
・・・とあって 別途、社員のシート名が社員名と同じであったとして
松田雄太のシートの10月の行へ入力した売上が飛んでいけ・・と言ったプログラムを組み実行する。
>1社員1シートにし、1シート内では該当社員以外の名前は隠して
ここを発想変えて
オリジナルシートと表示シートの2枚構成で
表示シートの A1セルにでも山田華子と名前を入れると、山田華子さんの一覧表がでる。
こういった構成がシンプルです。
何名分のシートを作成されるのかわかりませんが、社員ごとにシートを移動するより、名前入れて一発で表示させたほうが作業も楽だと思います。
オリジナルシートの構成を提示してもらわないと回答も難しいと思います。

この回答への補足

オリジナルシートの構成ですが

A    B       C      D       E ・・・    AH     AI
   4月1週目 4月2週目 4月3週目 4月4週目・・・10月3週目 10月4週目
山田  4000    3400    4800    4500 ・・・  5000
松田  3400    3200    5300    4000 ・・・  4900
井上  5000    4800    5100    4700 ・・・  5200
鈴木  4700    4500    3900    4100 ・・・  4300
平均  4275    3975    4775    4325 ・・・  4850

といった感じで、今後売り上げをこれに追加入力していきます。
10月4週目を入力するときに、最初の1シート(オリジナル)に入力するだけで、
それが全シートに反映されるようにしたい、ということなんですが・・・

すみません、何しろエクセル初心者なもので、これで「オリジナルシートの構成」の説明になっていますでしょうか?

補足日時:2008/10/25 12:55
    • good
    • 0
この回答へのお礼

ご回等ありがとうございます。
VBAですか・・・。使ったことがないので、勉強してみます。

確かに、何枚もシートを作るよりも閲覧は楽そうですね。
プリントアウトしたいときに毎回名前を入力してプリントしなければならなくなりそうなのが難点です。
シートを人数分作ってあれば、ブック全体を印刷、で全部印刷されますね。

シート自体は10名程度のものなのですが、平均が式で計算されて出されているため、全部のシートに全員分のデータが必要になるのです。それで、大変なことに・・・

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

お礼日時:2008/10/25 13:03

 


=Sheet2!A1

シート名の後に!を付けてセルを書けば出来ます

 

この回答への補足

考えてみたのですが、このやり方でやろうと思ったら、
オリジナルの一覧と、それを反映するもうひとつの反映側オリジナルを作って、
反映側を何度も複製すれば反映されるシートを増やしていけそうですね。
A1に =Sheet2!A1 と入力して、後はセルドラッグすれば簡単に全体の反映リストが作成できますね。 

お世話になりました。

補足日時:2008/10/26 08:31
    • good
    • 0
この回答へのお礼

早速のご回等ありがとうございます。

反映できるんですね!嬉しいです。
ですが・・・

う・・・っ。
という感じです。というのは、データのあるセルがすごい数なのです。
シートを複製する際に全セルにこの式を入れることはできないのでしょうか。
複製した後でもできるならそれが一番嬉しいのですけれど、
この際複製自体はやり直してもいいと思っているのですが・・・。

お礼日時:2008/10/25 12:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!