すべてのカテゴリ » インターネット・パソコン » ソフトウェア » 使い方・不具合

質問

終了

Excelの表について質問です。
取扱商品一覧のような表が既にあり、そのデータを利用してお客様に渡す注文用紙を作成しようと思っています。
随時商品が増えたりするので元データを関数かなにかを使って新しいブックに注文書として必要な情報だけを落とし込みたいのです。
どのような方法が一番簡単で繰り返し更新できるでしょうか?
ちなみに一商品1行としてデータを入れており現時点で300件ほど商品があります。
列は12列ほどで商品名やコード・単価他社内情報などを記載しており、この中から5列ほどだけを一度に抽出したいと思っています。
Excelファイルのままお客様に渡すので余分な情報が残らないようにしたいと思っています。
宜しくお願いします。

的確な回答が出て解決した時点で早期に締め切る場合がありますのでその点はお許し下さい。

  • 質問者:悩み中
  • 質問日時:2008-10-30 17:23:49
  • 0

回答してくれたみんなへのお礼

様々な方向からのアドバイス、ありがとうございました。
自分では考えていなかった方法もありとても参考になりました。
今回使わなかった方法もまたいつか生かせることもあると思いますので覚えておきたいと思います。

余りスマートな解決策では無いけど、マクロを1からガリガリ書くよりかは楽と言う観点で提案しますネ。

方針は原本シートを作って、その原本シートの値と書式のみのコピーをお客さんに提供するマクロを作る…とします。

作業手順ですが、先ずは何処かのシートにお客さんに提供したいセルを集めて一通り体裁を整えます(提供元シートと呼びましょうか←このシートは提供しません)。このシートは原本シートとなるのでリンク貼り付けや普通にセル参照等の数式を使って、お客さんが見易いように頁を作ってください。将来の修正や拡張の為に少し大きめの範囲を予定しても良いかも知れません(後でマクロを直すのも面倒かも知れないし)。

この体裁でヨシとなったら、ここからマクロの作成です。ガリガリとプログラムを書くのではなく手順を覚えさせてしまいます。マクロ記録スタート(『表示』→『マクロ』→『マクロの記録』)…

1.新しいBookを作成して、提供元シートから新しいBookに『形式を指定して貼り付け』→『値と数値の書式』、『形式を指定して貼り付け』→『書式』、『形式を指定して貼り付け』→『列幅』で貼り付けます。

または、CTRL-Aでシート全体を指定して貼り付けをしてから、もう一度、値だけを貼り付けしても良いです。この方法だと一々細々と貼り付けを繰り返す必要はありません。『値と数値の書式』だと背景色とか罫線や列幅等の書式がコピーできませんので。条件付書式は…Excel2007だと巧く行かない場合があります。

2.新しいBookから不要なシートを削除(最初から1シートだけの環境設定なら何もしなくても良い)。

3.新しいBookを適当なExcelファイル名で保存(このファイルがお客様に提供するファイル)。

マクロ記録終了。 元ファイルのExcelファイルをマクロ付きで保存。提供元シートを独立したBookにすればマクロ付きExcelファイルにした時に拡張子が変わっても他を変えずに済むかも知れません。マクロなしファイルの拡張子=xlsxとかxlsb、マクロ付きファイルの拡張子=xlsm。

これでいつでもマクロを起動すると提供専用の数式の入っていない値と書式だけのシートが完成です。先の提供元シートの入ったBookを元データのExcelファイルから独立した別のファイルにしておくと、ファイルを読み込んだ時にマクロを実行する設定にしておけば便利かも←この時に大本のデータファイルを開くようにマクロ(手順)で作っておくとファイルを読んだ瞬間に元ファイルを読み込んで新しいファイルを作って保存までしてくれます。

読み込み起動しない場合はマクロの起動はボタンかショートカットキーを利用すればOKかと。各ファイル名は固定でも良いし、後でマクロを編集してセルから引っ張り込んで来ても良いと思います。適当にやってみてください。

で、日頃の業務でデータを入力し終わったら、おもむろに先程のショートカットキーを押すと…お客さんへ提供するファイルが一瞬で自動的に作成されます。マクロを使っているのに、かな~り簡単な方法です。

他にはパスワード等で数式やシートを保護する手はあるけど、ファイルそのものも大きくなるし、余計な気を使わせる事になるので余り気が利いているとは思えない気がします。

*****

返信有難うございました、了解しました。度重なる修正は私の書き方が悪かったのです…御免なさい。

マクロはバリバリのアプリケーション作成(リアルタイムに株価を拾って来て自動的に発注するなんて物も作る事ができます)から、煩雑になる日頃のルーチンワークの自動化(手順の記録)まで様々な応用が利きますので方法だけでも覚えておくと、後々イザと言う時に瞬時に利用できるのでマクロの記録はお奨めです。

コピペの繰り返しの単調作業等は相対セルにしてからマクロを記録して使うと、手順を記録した後は1時間掛かる作業がワンキーを繰り返し押すだけで完了なんて事も可能ですし、終業前のいつもの10分作業をマクロで稼いでチョット得をするなんて事も可能かも知れません(笑。

運用で改良して行けるのならば、それが最善になる可能性は高いですね。頑張ってください。

# また長くなってしまいました、御免なさい。

この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

回答ありがとうございます。お礼が遅くなり申し訳ありませんでした。
しかも何度も修正もしていただいていたようで…
どんな方法が一番自分の職場環境にあっているかを考えつつ色々試していました。
マクロは試験対策でしか今まで勉強をしたことがなかったので水辺遊さんの細かな作業手順は本当に参考になり、また様々な注意点も勉強になりました。
とりあえずデータを複数人数の間で行き来させ、手を加える可能性を考えて一番単純な元データのシートを最後にコピーして不要な列を削除し、体裁を整え新しいブックに移動させるという形にしました。
使っていくうちに不具合があれば徐々に改良を加えることにしたいと思います。
教えていただいたことの半分も実行できなかったのですが、今後徐々に操作レベルを上げて綺麗なマクロが組めるようになりたいと思います。

並び替え:

マクロを組むのが一番簡単で、改造もしやすいかと思います。

  • 回答者:知識人 (質問から5時間後)
  • 3
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

回答ありがとうございます。
マクロをどう組むかも課題で…
もうしばらく考えてみようと思います。

VLOOKUP,またはLOOKUP関数というものが利用できると思います。
データテーブルを準備してkeyとなる注文された商品コードなどを
入力すると必要なデータを別表に表示するように出来ます。
そうして作った別表のエクセルシートからデータのみ残し関数を消去して
お客様に渡せばいいです。その手順をマクロ化してもいいですね。

添付可能な解答欄があれば例題をお送りできるのですけど。
 ポリテクセンターで専門の講師に習ったものです。

追補:私の例題とは違いますが解説がありましたのでご参考まで:

http://allabout.co.jp/computer/msexcel/closeup/CU20060805A/

  • 回答者:GⅢ (質問から4時間後)
  • 3
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

回答ありがとうございます。
0から始まるデータをそのまま表示しようと文字列のでセルの書式設定をしていたらおかしなことになり今まで悪戦苦闘していました。
とりあえずなんとか教えていただいた方法で作成完了です!
マクロ化できればいいのですが、今の手順だとあまりにもぐちゃぐちゃになってしまったので落ち着いて整理をしてどの部分をマクロ化するか考えてみようと思います。

ものすごくピントずれしそうですが、
マクロを組んだ方が早そうな気がしました。
1行ずつたとえば商品名を「shouhinmei」という
名前の箱にいれて、それを注文書の入れたい個所にいれる…。
ただ、マクロの内部を自分で書き換えができるという
前提での話なので、質問者さんがマクロの内部を
できるのかが分からないので、もしかしたらダメな例かもしれません。
すいません。

  • 回答者:知識人 (質問から2時間後)
  • 3
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

回答ありがとうございます。
お察しの通り…マクロは簡単なレベルなら設定できるのですが、内部の書き換えまではできない知識レベルです;;;
もっと勉強してお答え頂いた内容を理解できるようになりたいと思います。ありがとうございました。

リンク貼り付けはどうでしょうか。
通常通り必要な部分をコピーして
形式を選択して貼り付け→リンク張付け です。

これで作ると、開くときに更新しますか?と聞いてくるので
「更新する」にすると最新のデータに更新されます。

★追加★
手元で最新の状態になったものをコピーして値のみを貼り付ける感じでしょうか?

それでもよいと思いますし、更新は元になるデータが同じハードにないと更新できないので、お客様に、開く際には「更新しない」を選んで頂くようお伝えしておくとよいと思います。

  • 回答者:Sooda! くん (質問から2時間後)
  • 2
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

回答ありがとうございます。
簡単そうな方法で試してみたいと思いますが…
その方法ですとお客様にデータを渡すときにはどのように処理をしておけばよろしいでしょうか?
手元で最新の状態になったものをコピーして値のみを貼り付ける感じでしょうか?

●追記ありがとうございます!
お客様がどの程度Excelを使い慣れていらっしゃるかが不明なのでできるだけシンプルな形が安全ではないかと考えました。
この方法をとる場合はこちらで値のみ貼り付けという作業をすることにしたいと思います。
重ねての助言ありがとうございました。

ピントズレしているかもわかりませんが、
オートフィルタを使えばどうでしょう、

「データ」⇒「フィルタ」⇒オートフィルタをマークしますと、各列に▼表示されます
抽出条件の列の▼をクリックすると、条件以外の行は、非表示になります。
その状態で、コピー&別シート貼り付けとしますと、
表示行のみが、貼り付けされます。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/middle/mid-5.html

回答に成ったでしょうか

  • 回答者:知識人 (質問から22分後)
  • 2
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

回答ありがとうございます。
オートフィルタはこれまでにも便利で利用しているのですが、今回抽出したいと考えているものが列単位なので利用できない状態です…

あと、今回の質問とは別件になってしまうのですが、もしよろしければ教えて下さい。
行や列を一部非表示にした状態(折りたたんだ状態?)で表示している部分だけをコピーしようとしたのですが、どうやっても貼り付け先にまで隠れたデータもついてきてしまいました。
(この時は折りたたむのにオートフィルは利用していません)
これを回避する方法はありませんでしょうか?

一番簡単なのは コピペですね。
いるところだけコピーしてペースト
いらない数値だけクリア

これが一番簡単です。

  • 回答者:respondent (質問から5分後)
  • 2
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

回答ありがとうございます。
やはりそれが一番簡単でしょうか…
マクロを組んでボタン1個で更新したり、ブックを開けるごとに新しいデータを読みに行って更新してくれたりしたら楽だなーと思ったのですが…;;

関連する質問・相談

Sooda!からのお知らせ

一覧を見る