アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel VBA を使って、同じブックにある一覧表シートのセル範囲を指定して、別の個別シートのデータとして取り込み、編集後その個別のデータを一覧表に再度コピーする方法を教えて下さい。

教員をしています。VBAはまだまだ素人です。
クラス分の生徒の進路希望データ一覧表から、特定の生徒一人分の進路データを個別シートにコピペして、編集後それをその一覧表シートに再度コピペしたいのです。

各生徒には志望校は5校分を設定し、1校につき1行で各データをその列に入力します。
(志望校の学部、学科などのデータをその列に入力します)
先頭には生徒のID番号を行毎に5校分(1組の1番なら1011~1015の4桁)を設定しています。
一覧表のシートにも同じID番号と氏名を40人ほど(最後の生徒なら1401~1405)入力してあります。
その一覧表からID番号を使って各生徒の5校分のデータを、個別シートにコピペして、
個別シートで編集した後で、また一覧表にコピペしたいのです。

どうぞご教授お願いします。

質問者からの補足コメント

  • うーん・・・

    fujilinさん、ありがとうございました。
    関数ではなく、というご回答でしたが、ウッカリ勘違いして返答してしまいました。
    相互にコピペを記録マクロでなら作れそうですが、
    手書きでVBAのプログラムは上手くいかないです。
    さらにご回答いただいたchangeについては勉強不足で分かっていませんでした。
    できましたら、も少し詳しくは教えていただけますか?
    宜しくお願いします。

      補足日時:2017/08/15 17:39

A 回答 (3件)

> いかがでしょうか?



文字によるコミュニケーションの難しさを痛感しております。



> 構成としては、学年全体の生徒のID番号、 (中略) を想定しています。

え~と、シートのフォーマットが既に存在しているわけではないのですか?
では、まず両シートフォーマットを、操作イメージと合わせて決めるところから初めて下さい。
これはご本人でないと決められません。



こちらが期待していた「具体的な情報」というのは、
例えば、以下の様な情報です。

「一覧表シート上のボタンをクリックすると、一覧表シートの選択されている行から下へ5行分のA列からZ列を、シート名××の個別シートの□□セル~△△セルへコピーする」
「個別シート上のボタンをクリックすると、個別シートの〇〇セルのID番号を、一覧表シートのA列の3行目から下へ検索して、ヒットした行のA列~Z列へ、個別シートの□□セル~△△セルをコピーする。」



> そのデータを別シートで個人データとして表示し、進路相談でその内容を記入したり修正したりして、それ内> 容が全体の学年のデータシートに反映することができればと思っています。

個別シートというのは一つしか存在しないのですか?
生徒毎にシートが存在するのだと思っていました。


> クラス別に各担任が使えれば、と思ってましたが、いずれ全体の受験結果などを集約するので、最初から学年全体のデータ一覧を想定するのもありですね。

どちらにするか決めるのは、質問者様です。


推測ですが、質問者様も、まだ漠然としたイメージしかお持ちではない様です。
もう少し具体化してから、再度質問された方がよろしいのかもしれません。
    • good
    • 1
この回答へのお礼

助かりました

すみません、度々。
すでにクラス分のデータは作ってあって、それを個人別シートに呼び出して、
編集したり、加筆して、また元のデータシートに反映させる作業です。
個別のシートは1シートだけで、必要に応じて指定した生徒のデータを呼び出すようにしたいのです。
個別のシートは必要な人数分、プリントできるようにしたいのですが、
この印刷については、印刷用のシートを作ってvlookup関数では取り出し、繰り返し印刷でできようにはしてあります。
こんな構成ですが、いかがでしょうか?
よろしくお願いします。

お礼日時:2017/08/16 09:52

誰が作成するにしても、具体的な情報がないと適切な回答がつきにくいのではないでしょうか?



・一覧表シート/個別シートの構成
  どの行/列にどのような情報が入っているか。
  コピーしたいセルの具体的範囲。(両シートで)
・個別シートは複数あると推測できますが、そのシート名は何?(名前/ID番号/その他)
・クラスは何組まであるのか
・ひとつの一覧表シートに全クラス分の情報があるのか、クラス毎に一覧表シートがあるのか
・「同じブックにある一覧表シートのセル範囲を指定」の具体的方法
  質問者様がどの様な操作方法をイメージしているのか

あと、No.1さんも仰っていますが、
なぜ、わざわざコピー→編集→コピー(戻す)という手間をかけるのか?
最初から両シートに同じデータを反映するような構成ではまずいのか?
(「編集」がどのようなことを行うのかでも変わってくると思いますが……)
    • good
    • 0
この回答へのお礼

siffon9さん
ありがとうございます。
クラス別に各担任が使えれば、と思ってましたが、いずれ全体の受験結果などを集約するので、最初から学年全体のデータ一覧を想定するのもありですね。
構成としては、学年全体の生徒のID番号、クラス番号、出席番号、氏名、受験学校分類、学校名、学部、学科、コース、文系理系分類、推薦一般などの受験方式、合否、入学の有無、男女、内部進学か否か、備考欄、エントリー期間、願書受付期間、一次試験日、一時発表、二次試験日、二次試験発表、備考欄2、を想定しています。
一人につき5校分を割り当てて、全体のデータを作るとして、6学級ですので約240名、各5校分とすると1200行ほどになるかと思います。

そのデータを別シートで個人データとして表示し、進路相談でその内容を記入したり修正したりして、それ内容が全体の学年のデータシートに反映することができればと思っています。
さらにその個別のシートを印刷して面談しながら手書きメモができればと思っています。

いかがでしょうか?
コピペとかいたのは、そういう方法でやるのがいいかと思っただけで、他にスムーズにできる方法があれば、ぜひご教授ください。
改めてVBAはほぼ素人です。
よろしくお願いします。

お礼日時:2017/08/16 08:08

こんにちは。



VBAの回答ではありません。

>個別シートで編集した後で、また一覧表にコピペしたいのです。
編集は個別シートで行うのが原則で、一覧表には常にその内容が反映できていれば良いものと解釈しました。
・・であるなら、毎回コピペせずとも、各個別シートの内容が一覧表に反映できれば良いので、一覧表の各セルに適切な参照式を設定しておけば済むのではないかと思います。
IDや氏名で特定できそうですので、参照式をうまく作成すれば一つの式でオートフィルできる形式にすることも可能だと思いますし、それで目的を達成できるのではないかと想像します。

上記の場合は一覧表側では編集しないと仮定していますが、もしも、どちらのシートで編集しても常にその内容が他方のシートに反映されるようにしたいということでしたら、「一覧表→個別シートへ反映」と「個別シート→一覧表へ反映」の2種類のマクロを作成しておいて、changeイベントで処理するようにしておくと、コピペすることを意識する必要もありませんし、コピペを忘れるといったミスもなくなるものと思います。
    • good
    • 0
この回答へのお礼

うーん・・・

早速のお返事有難うございます。
データを個別のシートに呼び込むのは関数を使ってできるのですが、その個別のシートに書き込むと関数にデータを上書きして消すことになりますの無理ですよね。
相互にデータをやり取りできるようにVBAを使いたいのですが、どうでしょうか?

お礼日時:2017/08/15 16:33

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