• 締切済み

参照元のブック名の変更を自動的に式に反映させたい

1つのフォルダの中に生徒数分のブックがあり、その他に集計用のブックがあります。 生徒用ブックが20、集計用が1つあると思ってください。 集計用ブックには参照元の生徒用ブックの点数等が自動的に反映するようにしたいと思います。 表は、B1から列横に生徒の名前、 A2から下にテスト項目、 B列2行目から下に各々の生徒の成績が反映されていると思ってください。 1行目の生徒名も、成績の点数も、生徒のブックをいじると 自動的に集計用ブックに反映されるようにしたいのです。 自分で使用するなら、後が面倒でも簡単な方法を採るのですが、 私は元を作るだけで、それぞれ講師の先生に渡して使って貰うので、 なるべく自動的に反映されるようにしたいと思っています。 今、仮にブック名をstudent1と付けていても、実際には生徒名を付けるでしょうし、 シート名も代わる可能性があります。 使用するシートの表形式は、基本的に生徒用も集計用も全く同じにします。 ただ、集計用に関しては、生徒の成績の欄が横にずらずら~と長くなるイメージです。 リンクでやると、ブック名が変わるたび 毎回リンクの変更更新をしなければいけないので、 作業が面倒になります。 すると、マクロでないと出来ないと聞きました。 使用エクセルは2003です。 こんな面倒な質問に答えて頂ければ幸いです。 やりたいことが伝え切れているか不安ですが、不明点を記載して頂ければ補足します。 どうか、宜しくお願い致します。

みんなの回答

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

>エクセルど素人なので、どうしたらよいか、具体的にコードや方法を教えて頂けると助かります。 一般的なマクロの操作や動作確認と言う事であれば別ですが、すでに運用されているシステムの場合 実際のシート構成、保存フォルダー、運営方針・ルールなどの詳しい情報がないと具体的なコードの提示と言うのは無理です たとえコードの提示が出来たとしても、実際に保守運営を行う方が理解されていないと細かな修正も出来ません、何かしらの不具合が出来てこの場に再度質問を行ったとしても、前回コードを提示した回答者が必ず回答を行うわけではないため、余計ややこしくなる可能性があります

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

エクセルではシートやブックを別にすると、途端にまとめなどがむつかしくなる。エクセルの経験が少ないからそういうことをすると思う。質問のようなことは、質問者がVBAでも出来ないと出来ないおもう(仕事にエクセルを使い出すとVBAが出来ることが必須だろう)質問者は簡単なVBAでも作った経験あるのかな。 ーー 次善の策として、生徒数分の各シートに、まとめて、シートの3D集計や、統合などの機能を使うようにすべきでしょう。 そのためにはVBAのお世話になる必要があるかもしれないが、まだコードは比較的簡単と思う。 ーー 疑問 >1つのフォルダの中に生徒数分のブックがあり >表は、B1から列横に生徒の名前、   は矛盾するようで良くわからない。 表は、下記のように取れるが ーーー田中  鈴木 木村 ・・・ 国語 20 30 25 算数 30 理科 ・・・ ならブックは生徒別が必要ないのでは? 質問には文章でくだくだ書くばあかりでなく、簡単なシートの列や行のデータ実例を挙げて質問すること。 ーー 一案(質問の自動という点ではない) かりに自動でブック名が変わったとして、どういう機能で集計なりを出そうというのか?目算はあるのか? ピボットテーブルという機能がある。 これは別の複数ブックを指定できる。 点数1.xls ーー 田中 木村 鈴木 国語 20 35 40 算数 30 30 50 社会 40 40 20 ーー 点数2.xls 田中 木村 鈴木 国語 20 30 40 英語 40 50 20 算数 20 20 20 ーー ピボットで合計すると 合計 / 値2 列 行 田中 木村 鈴木 総計 英語 40 50 20 110 国語 40 65 80 185 算数 50 50 70 170 社会 40 40 20 100 (空白) 総計 170 205 190 565 操作の途中で 統合するワークシートの範囲を指定してください、で [点数1.xls]Sheet1!$A$1:$D$5 [点数2.xls]Sheet1!$A$1:$D$5 のように別ブックを指定できる。 20ブックもあると指定が大変だが、仕方がない。どこかにこの20行の範囲を作っておき、作業の前に変わってないかチェックするしかなかろう。 ピボットは合計だけでなく、いろんな計数をだすことが出来る。 体裁についても色々できる。 こういうのでも活用してやるほか無いでしょう。 点数1.xls]Sheet1!$A$1:$D$5 などを変えたときは、ピボットの操作者が変えないと自動では変わらないでしょう。 ー たやすく自動というがプログラムのプロの仕事であって生易しいものではない。 関数におけるデータ変更で結果が自動で変わることぐらいが自動の場面と思っていて丁度良い。

0211suzu
質問者

補足

ありがとうございます。 私の実力では無理だと思いながらも、上司の無茶な命令にとにかく出来るところまでやってみようと、言う状態です。 ピボットテーブルを使うのも手ですね。 ブックを別にしているのは、個々の成績の分析、グラフ化した物を受講者別に管理しているからで、生徒数分のブックと集計ブックを用意するのは、今回のミッションでは必須なのです。ピボットテーブル試してみます。 細かく教えて頂き、ありがとうございます。 またお礼を書きたくなった時に、書くところが無くなると困るので、補足に記載しました。ご容赦ください。

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

根本的なことですが ブック名を変更した場合、マクロであっても変更したブック名にコードの中身を書き換える必要が出てきます ※Sheet名が変更になる分にはSheet(1)とそのブック内の何番目のシートと指定する事でシート名が変更になっても対応は可能(シートの並び順を変えたり、追加・削除をしない限り) ブックの名前付けのルール自体を取り決める必要があります 例: 1.集計用のブックを作成 2.集計用ブックの生徒名から生徒別のブックの作成 3.生徒別のブック名の変更、保存先フォルダーの変更禁止 4.生徒用ブックのシートは削除や追加、並び順変更の禁止 ※3と4は運営ルール、2はマクロで自動作成 こんな形で

0211suzu
質問者

補足

なるほど、やはり自動的に、と言うわけにはいかないと言うことですね。 エクセルど素人なので、どうしたらよいか、具体的にコードや方法を教えて頂けると助かります。 現状のベストの方法で、構いません。

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

関連するQ&A

  • ブック間を参照しているVBAのブック名

    こんにちは、皆様のお知恵を御貸しください。 現在、VBAにてブック間で集計を行っています。 *集計用のブックがあり、コマンドボタンを押すと、各個人(15人分)のブックを読みに行き、集計する。 しかし、まもなく新年度を迎えるにあたり、年号や担当者の変更を行わなくてはいけません。 (ブック名例) 現在:ブック2012(担当1)  新年度:ブック2013(担当2) *年号は毎年更新し、上記の担当1・担当2の場所には個人名が記入されています。 毎年、参照するブック名を変更するために、VBAを書き換えるのも面倒ですし、VBAがわかる人材がいつも居るとは限りません。 何か良い案がないか、皆様よろしくお願いします。

  • エクセル数式:参照元の変更を反映したい

    エクセル2003です。 ある名簿のファイルAと それを元に統計を出す為別のファイルBを作っています。 ファイルBにはファイルAのC列とO列を材料にして条件の合う件数が出るように下記のような式が多数入っています。 =SUMPRODUCT((LEFT([ブック名(A).xls]シート名!C1:C200,2)="●●")*(NOT(ISERROR(FIND("△○△",[ブック名(A).xls]シート名!O1:O200))))) ファイルAにおいて、例えば198行目を追加や削除するとこれにそってファイルBの式は変わらないのでしょうか。(C1:C200→C1:C201とかC1:C199など) 他に都合があって$C$1:$C$200や$C1:$C200としていたこともあったのですが、いづれもファイルAの変化は反映されず、毎回置き換えなり修正をしなくてはなりません。 いい方法があるでしょうか。

  • Excel シートを追加したら別ブックへ自動的に反映したい

    具体的には、追加したシート名を別ブックの一覧表の特定セルへ自動反映させたのです。シートが追加される度に、一覧表へ反映されていく・・・というのが希望です。 関数で可能でしょうか?マクロはよく分からないのですが・・・。お知恵をお貸し下さい!よろしくお願い致します。

  • Excel シートを追加したら別ブックへ自動的に反映したい

    具体的には、追加するシート名が、別ブックの一覧表の特定のセルに自動反映されるというのが希望です。 マクロとか、ほどんど分かりません。関数で可能でしょうか?よろしくお願い致します。

  • ピポットテーブルのデーターを別のブックで参照する

    ピポットテーブルのデーターを別のブックで参照する エクセルの質問です。 例えばAというブックがあり、シート名が「本部入金まとめ」とします。 このシートにはピポットテーブルのデータが貼り付けられております。 シート名「本部入金まとめ」のセルB5の値を別のブック「入金一覧表」のシート名「本部」のセルU4に反映させるにどうしたらよいのでしょうか? 「=」にてリンクしてみましが、エクセルを閉じて再度開くとエラーになってしまいます。 どのようにすればピポットのデーターを他のブックに反映させることができるのでしょうか? ご教授をお願い致します。 ちなみにエクセルは2016、OSはWin7 32bitとなります。

  • 別シートの参照値を反映したい

    別シートの参照値を反映したい book内にSheet1~4まであります。 Sheet1のA1には、Sheet2~4という文字列が入ります。 Sheet1のB1には、Sheet2~4のセルの番地のみ入力されています。 Sheet1のA5に「="="&A1&"!B1"」と入力した際に文字列ではなく参照先の数字が反映される ようにしたいのですが、可能でしょうか? ちなみにコピーして値のみ貼り付け、F2を押せば数字が反映されるのですが、関数を残して おきたいと考えています。 ご教示お願いいたします。

  • フォルダ内の複数ブックのデータとブック名を転記する

    フォルダの中に複数のExcelファイル(ブック)が入っており、 それら全てのブックデータの転記を一括して行うマクロを現在使用しています。(後述) <現在の利用状況> ・フォルダの中に複数のExcelファイル(ブック)が入っている。ファイルにつきシートは1つ(ひな形は同じ) ・ファイルを確認するまでデータが何行入っているか分からない ・貼り付ける際はシートの上部は意図的に消している <改善希望> ・どのファイルから貼り付けたか分かるように、A列にファイル名を追記したい(どの行にも) ・できれば先頭の3文字のみ VBA勉強中の初心者ですが、なるべく早く実装しないといけないので、困っています。。。。 ご教示頂けます様お願いいたします。 ========================= Sub データ集計() '集計シートを変数に格納 Dim ws As Worksheet Set ws = ActiveSheet '集計シートの最終行を取得 Dim LastRow As Long LastRow = ws.Cells(Rows.Count, 5).End(xlUp).Row MsgBox "このブックと同じフォルダにあるブックを全て統合します" 'このブックの保存されているフォルダのパス(番地;ディレクトリ)を変数に取得 Dim thisPath As String thisPath = ThisWorkbook.Path 'ディレクトリにあるExcelのファイル名を取得 Dim fileName As String fileName = Dir(thisPath & "\" & "*.xlsx") Dim i As Long 'ファイル名が無くなるまで繰り返す Do While fileName <> "" '開くワークブックを変数に代入 Dim bufBook As Workbook Set bufBook = Workbooks.Open(thisPath & "\" & fileName) '開いたブックの第1シートの全データ --> 集計シートの最終行 bufBook.Worksheets(1).Range("B14").CurrentRegion.Copy Destination:=ws.Range("B" & LastRow) '最初のループ以外では、タイトル行を削除しておく Dim LastRowSecond As Long LastRowSecond = LastRow + 13 If i > 0 Then ws.Rows(LastRow & ":" & LastRowSecond).Delete End If '開いたブックを閉じる bufBook.Close SaveChanges:=False '集計シートの最終行を再取得しておく LastRow = ws.Cells(Rows.Count, 7).End(xlUp).Row + 1 '次のファイル名が取り出される。 fileName = Dir() i = i + 1 Loop End Sub

  • EXCELで値を他のbookに反映

    シート名 7月1日     出勤 退社 Aさん 9:00 18:00 Bさん 9:00 17:00 Cさん 8:00 20:00  : このようなbookがあって、シート1枚に1日分でひと月ごとのbookになっています。 もうひとつのbookが シート名 Aさん     出勤 退社 7月1日 9:00 18:00 7月2日 9:00 18:00  : となっていて、シートは、Aさん、Bさん、Cさん・・・と人数分あります。例えば上のbookの7月1日のシートのAさんの出勤、退社時間を入力すると下のbookの7月1日のAさんのシートの出勤、退社の部分に値をそのまま反映させられることはできますか?1個1個だとリンク貼り付けやコピーでできるのですが、それだと両方打ち込むのとあまり変わらないので他に方法があったら教えて下さい。宜しくお願いします。

  • Excel他のブックへの自動リンクの表示を消したい

    Excelで既に作成したいくつかのファイルをコピーし、1つのブックを作成しました。入力データシートを作成し、各シートにリンクさせ、手間を省くようにしました。ひとつづつ確認し、以前のファイルは関係なくブック内で処理できるようにしたつもりですが、ブックを開くたび、「開いてるブックには他のファイルへの自動リンクが設定されています。このブックを更新し、他のブックの変更を反映しますか?」更新するかしないかの確認画面が出ます。 この確認画面がわずらわしいので消したいのですが、どこが他のブックにリンクされてるのかわかりません。探す方法はありませんか?ぜひ教えてください。宜しくお願いいたします。

  • ブック名を引きずらない数式のコピー

    日付け毎にファイルされた実験データを整理していますが、数式の入ったセルをコピーすると、ブック名がついてコピーされてしまいます。 1)他のブックから数式の入った表をコピーしたとき、コピー元ブック名なしのシート名と関数のみをコピーする方法はありませんか。 2)指定した表内の参照シート名を一括して変える方法はありませんか。 3)実験を実施した毎にシートができています。 例えば、2月1日の3回目の実験データ: 070201(3) 集計表で、070201(x)のxを自動的に更新するセルコピー方法はありませんか。

専門家に質問してみよう