- 締切済み
エクセル:社員証に辞めた人を反映させなくしたい
EXCELで社員証のようなものを作っています。 Sheet1が各ID番号の入った名簿、Sheet2が印刷用のフォーマットで番号と名前が反映されるようになっています。 これを、たとえばSheet1で退職年月日の欄に何か記入した場合に、その人がSheet2の方ではとばされて表示するようにしたいのです。 こういったものを関数で作れないでしょうか? つまりこういう感じです A B C --------------- 001 ○田□太 | 001 002 △山◇夫 06.3.30 → | ○田□太 003 ■野▽子 |--------------- | 003 | ■野▽子 --------------- Sheet1 Sheet2 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
質問は、エクセル的発想です。 アクセスやプログラマ的(VBAでも)発想では、印刷イメージは、人数分だけは、具体的には持ちません。VBAでも、出力エリアを1箇所だけ使い、中身を変えて印刷、次の人の中身に変えて印刷、を繰り返します。飛ばす場合は、名簿の方のデータで退職者分は読み飛ばします。 ですからそんなに難しくなりません。 ーーー エクセルでは 「検索する」というのが、不要なものを捨てることに当たります。それを、即時反映するのでも、行単位で捨てて、残すものを詰めるのでも、関数を使ってやる方法の1つとしては、私はimogasi方式と自称して、このOKWAVEで沢山回答してますので、、良ければ照会して見てください。 事ほどさように、関数での抜き出しや、一部を捨てて詰めるというのは難しい。 たとえ詰めなくても、複雑になると思います。 行単位でも難しいのに、複数行が組みになったものを、削除するのは 複雑すぎてやる気がしません。
- ipsum11
- ベストアンサー率21% (55/251)
VBAでシート1を読んでいくしかなさそうですね。 001は入力なし→シート2に出力 002は入力あり→読み飛ばし 003は入力なし→シート2に出力 てな具合でいかがでしょう?
お礼
お礼の方が遅れまして、すみませんでした。 こちらの方法を参考にさせていただいて、マクロに取り組んでみることにします。 ありがとうございました。
補足
実は、VBAは自分で作ったことがないのです。 この方法だと、Sheet1の順番がそのまま2に反映されることになるんでしょうかね?Sheet2が結構複雑なので(表面と裏面が数枚ずつまとめて交互にでてきたり)Sheet2に貼った関数から1を引っぱってくる形にならないかと思ったのですが…。この辺はどうにかなるのかな?(すみません無知で) 関数で見つからなかったら、この方法で調べて考えてみようと思います。ありがとうございます
「印刷用のフォーマット」の詳細が不明なのですが、お示しになったものを見る限りは… Sheet1 自体を印刷設定しておけば一挙解決に見えます。1行目を左から、ID番号、社員名、退職日と項目を設定しておけば、その行で[オートフィルタ]を設定して、[退職日]の欄を空白でレコードを抽出すれば、即 印刷に反映されるから。
お礼
お礼が遅くなりましてすみません。早速のご回答、ありがとうございました。
補足
うーん、説明が足りなくてすみません。 できればSheet1の名簿はそのままの(辞めた人も全員が入っている)形で、退職日の欄に記入した時に即Sheet2に反映するようにしたいのですが… 関数だけではやっぱり難しいのでしょうか… なお、Sheet2には社名情報などもっといろいろ入っています。
お礼
お返事が遅れまして、すみませんでした。やっぱり関数だけで作るのは難しいようですね。 何回か定期的に内容をまとめて更新する必要があったので、印刷画面を一斉に表示できると都合が良いと思いこういう形になったのですが。 実は今早急に解決する必要がなくなったもので、これから試しにマクロでこの形で処理できるものを作れるよう取り組んでみることにします。 アドバイスありがとうございました。