エクセルで社員の売り上げリストと会社全体の売り上げの平均を出しました。
これを、同じブック内で人数分のシートを複製して、
1社員1シートにし、1シート内では該当社員以外の名前は隠して
社員本人の売り上げリストと会社全体の平均のみ表示し、
オリジナルのシートでは全リストを表示したままの状態にするとします。
これで、今後オリジナルのシートに新たに各社員の数値を入力するだけで、
ブック内の各シートにデータが反映されるようにすることは可能ですか?
たとえば、オリジナルのシートに11月の山田華子と松田雄太のデータを入力したら、
それが山田華子のシート、松田雄太のシート、その他にも反映するようにしたいのです。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
個人のシートが、以下の様であれば
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でできますので別途質問してみてください。
このやり方でできました!
ありがとうございました!
エクセルはまだまだ奥が深いようなので、
VBAのほうも勉強したいと思います。
本当にありがとうございました!!
No.5
- 回答日時:
実例も挙げてないため、一読して、内容を理解できない部分もあるのですが
ーー
エクセルの関数の本質をしっかり理解してください。
エクセルの関数は、データをセットする(受ける)側で、式を書いて
(自分以外の)あそこのセルとあそこのセルのデータで、こうこう処理・計算など、してとエクセルに願い出るカタチです。ですから反映する場所が複数あるとその場所に式をいれる必要があります。セルにキャッチャーがいるイメージです。
突き詰めると
=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が必要な理由を説明してみました。
ありがとうございました。
VBA自体を私が理解していないため、今はせっかくimogasiさんが説明してくださったことも、よく理解できていません。
VBAを一度勉強してきてから、またこの質問を閲覧して、imogasiさんの回答をきちんと理解したいと思います。
ありがとうございました。
No.4
- 回答日時:
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
などと編集してください。
ご丁寧に印刷方法まで細かく教えていただいて、
ありがとうございます。
VBはまったくわからないので、もう少し勉強してからやってみようと思います。
No.2
- 回答日時:
>たとえば、オリジナルのシートに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シート(オリジナル)に入力するだけで、
それが全シートに反映されるようにしたい、ということなんですが・・・
すみません、何しろエクセル初心者なもので、これで「オリジナルシートの構成」の説明になっていますでしょうか?
ご回等ありがとうございます。
VBAですか・・・。使ったことがないので、勉強してみます。
確かに、何枚もシートを作るよりも閲覧は楽そうですね。
プリントアウトしたいときに毎回名前を入力してプリントしなければならなくなりそうなのが難点です。
シートを人数分作ってあれば、ブック全体を印刷、で全部印刷されますね。
シート自体は10名程度のものなのですが、平均が式で計算されて出されているため、全部のシートに全員分のデータが必要になるのです。それで、大変なことに・・・
ありがとうございました。
No.1
- 回答日時:
=Sheet2!A1
シート名の後に!を付けてセルを書けば出来ます
この回答への補足
考えてみたのですが、このやり方でやろうと思ったら、
オリジナルの一覧と、それを反映するもうひとつの反映側オリジナルを作って、
反映側を何度も複製すれば反映されるシートを増やしていけそうですね。
A1に =Sheet2!A1 と入力して、後はセルドラッグすれば簡単に全体の反映リストが作成できますね。
お世話になりました。
早速のご回等ありがとうございます。
反映できるんですね!嬉しいです。
ですが・・・
う・・・っ。
という感じです。というのは、データのあるセルがすごい数なのです。
シートを複製する際に全セルにこの式を入れることはできないのでしょうか。
複製した後でもできるならそれが一番嬉しいのですけれど、
この際複製自体はやり直してもいいと思っているのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
Excel 複数のシートからグラフ...
-
ExcelVBAで、指定したシートに...
-
エクセルファイルを軽くする方法
-
Excelの中央値の複数条件について
-
該当するデータを書式設定ごと...
-
ピボットテーブルから抽出デー...
-
エクセル自動の年月
-
エクセル2007の計算式の質...
-
Excel 2000でソートさせようと...
-
VBAでシート名をセルから取得し...
-
エクセルVBA:表の内容を担当者...
-
VBAのoffsetの動き方について教...
-
エクセル シフト勤務表から、...
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
エクセルでグラフタイトルが折...
-
Excelで行ごとコピー、同じ行を...
-
エクセルにおける、グラフの指...
-
Excelの関数について、特定の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
Excel 複数のシートからグラフ...
-
Excelの中央値の複数条件について
-
エクセル シフト勤務表から、...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルのワークシートが重く...
-
ExcelVBAで、指定したシートに...
-
VBA セルの値と同じ名前のシー...
-
Excel ハイパーリンク先のセル...
-
エクセル自動の年月
-
VBAのoffsetの動き方について教...
-
エクセルで入力→日付を自動判別...
-
エクセルVBA:表の内容を担当者...
-
エクセル マクロを使って日々...
-
エクセルについて質問です 日付...
-
ピボットテーブルから抽出デー...
-
VBAでシート名をセルから取得し...
-
Excelの選択肢をポップアップリ...
-
VBAを利用しオートフィルタで日...
-
Excel日付変更との参照先の連動
おすすめ情報