• ベストアンサー

エクセルに関する質問

できそうでできなかったので相談させてください。 (詳細を書くとわかりにくくなるので、簡単なケースで質問しております) BOOK1のシートのランダムに選択した複数の各セルに○を1個入力。 BOOK2のシートにもランダムに選択(しかしBOOK1のセルとは重複しない)した複数の各セルに○を1個入力。 上記、BOOK1のシートの情報をBOOK2のシートに貼り付けたいのです。(もちろん、BOOK2の情報も生きていて、結果的にBOOK1,2両方の○がついたシートを完成させたいのです) よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.11

No.5です。 マクロの実行のしかたですが、手順にしたがってやれば難しいことはありません。(一からマクロを組むとなると、勉強が必要ですが) 一度チャレンジしてみてはいかがでしょうか。 以下、私の回答したマクロを実行する手順です。 1.BOOK1とBOOK2を両方開いておく。 2.どちらのBOOKでもいいのでExcelの画面から、「ツール」>「マクロ」>「Visual Basic Editor」を選択する。(またはAlt+F11のキーを押しても可能) 3.マクロを入力する画面(これがVisual Basic Editor)なので、メニューから「挿入」>「標準モジュール」を選択する。 4.右の白い画面に、以下のマクロをコピーして貼り付ける。 Sub シートを1つにまとめる()   Dim B1 As Workbook, B2 As Workbook   Dim R As Range   Set B1 = Workbooks("Book1.xls") '実際の名前に修正してください(ブック1)   Set B2 = Workbooks("Book2.xls") '実際の名前に修正してください(ブック2)       For Each R In B1.Sheets(1).UsedRange     If R.Value = "○" Then       B2.Sheets(1).Range(R.Address).Value = R.Value     End If   Next End Sub 5.貼り付けたマクロの中にある"Book1.xls"と"Book2.xls"を実際に開いているファイル名に書き換える。 6.マウスで上記マクロの中のどこでもいいから選択した状態でF5キーを押す。 または、Excelの画面に戻ってAlt+F8を押し、マクロ実行画面が出るので上記マクロを選択して「実行」をクリックする。 これでBook1の○をBook2に転記するマクロが実行できるはずです。

keromaru2005
質問者

お礼

ご親切にありがとうございます。 別の方に教えていただいた、コピー&ペーストでもできましたが、 急遽の作業ながらも、入力しては報告と、更新のたびにクライアントに提出していかなければならないモノでしたので、作業数が少ないことがうれしく思います。 ------------------------------------------------------ 回答をくださったみなさまへ 本当にありがとうございます。○の入力は面倒ですが、 確実に作業はこなせており、2名の作業をひとつにして、 都度報告し、順調に進んでおります。 最後に回答してくださった方の欄をお借りして、 回答をくださったみなさまへ改めて御礼申し上げます。

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

その他の回答 (10)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.10

こんにちは。 しばらく、ヒントとなるキーワードから推理してみました。 図式化すれば分かりやすいのですが、こちらも想像だけで、ためしに書いてみます。結果は、#5 さんの理解されて回答している内容とほぼ同じでした。 「○」がランダムに並んでいるのは分かっていても、「○」だけがあるように読めるわけで、たぶん違うから、「ランダムに選択」という言葉を言っているのだと思います。上書きされては困るものもあるからではないでしょうか? 「(複数セルを)ランダムに選択」では、そのままではコピーだけは出来ないのです。「図とかビットマップとかの貼り付けの選択画面」というのは、コピーされていないからです。これは、なかなか、解決策は思いつかないです。おそらくは、手作業ではとても大変だから、質問しているわけでしょうから。マクロのほうがまだ易しい気がします。 ------------------------------------------- ・手順 (○だけの文字列を抜き出して、位置情報は前のままで、重ね合わせる方法) まず、Book2 に[挿入]-[ワークシート]で、新しいシート(『補助シート』)を1つ設けてください。(その『補助シート』は最後に削除します) 最初に、Book1のシートをそのまま『補助シート』に貼り付けてください。 貼り付けられたシートの中から、「○」だけを選択してください。 (注意:「○」以外のものは選択してはいけません) 次に、Crtlキーを押したまま、Book2 のデータのあるシートを選択して、二つのシートを作業グループにしてあげます。 F2 キーを押して、もう一度、Ctrlキーを押したまま、Enter キーを押せば、同じ位置で、データのあるシート側に移されます。 ちゃんとコピーされたか確認して、最後に、『補助シート』を削除してください。 ------------------------------------------- ただし、現実的には、これだけでも大変な作業になるように思います。 #5さんのようなマクロで十分です。マクロなら、1分以内に終えてしまいますが、これをマクロを使わずに手作業でやったら、数十分は掛かるかと思います。 本来は、Visubal Basic Editor 画面(Alt + F11)を開けて、少し書き換える気持ちさえあれば可能なのです。最初にするのは、画面の切り替えだけなのです。別に、この時点でVBAを覚えるという必要は何もありません。

keromaru2005
質問者

お礼

回答ありがとうございました。 テストパターンで少ないデータでやってみたらできました。 作業量は確かに大変ですが、確実性が大切なので、 苦にはなりません。

すると、全ての回答が全文表示されます。
noname#96725
noname#96725
回答No.9

おはようございます、#4のmariocecです。 昨夜は眠い頭で大変な誤解をしていました。シート同士でなくブック同士の連携なのですね。 お詫びして訂正します。ただしご質問者さんの補足で状況と意図が分かりましたから やっぱり第2のシートを使う路線で行きます。 ○を書き入れるのに使うのはAパソコンのBook1のシート1およびBパソコンのBook2のシート1とし、 二枚のシートの合算結果はBパソコンBook2のsheet2に表示するという方法をとります。 なお、2台のPCそれぞれで作業するのですから違うPCにあるBook1とBook2の連携のさせ方は 特に言及しませんが、realsyncなどの連携ソフトをお使いだと思います。連携ソフトを使って A_PCから取り込んだブック1をB_PCでもBook1という名前にしておきます。 Book2 のシート2を結果表示用のシートとするならば、そのsheet2のA1に次の関数を貼り付けます。 =IF([Book1.xls]Sheet1!A1="○","○",IF(Sheet1!A1="○","○","")) これを貼り付けておいて、式のうち最初の部分 [Book1.xls]Sheet1!A1 を選択して削除し、そのままの状態で、取り込んだBook1のシート1にあるA1セルをクリック してやると自動でフルパス表現になるので助かります。 出来上がった関数を必要な行数・列数にコピペしてやると合算表が完成します。 ここから先は想像ですが、同じ作業をA_PCにも施してやるとそれぞれのパソコンのシート2には それぞれの連携ソフトを起動させることでまったく同じ結果が表示されると思います。 記入がシート1、結果確認がシート2という煩わしさがあるものの、 この方法がご質問者さんの意図に沿っているならば良いのですが。

keromaru2005
質問者

お礼

回答をありがとうございます。 IF文ならなんとか理解できるので、回答の考え方をわかりました。 連携ソフトが何かは不勉強のため、わかりませんが、 2台のPCは共有フォルダがありますので、 そのなかで作業すれば、自動的に反映されるのだろうと 思っておりますが、よろしいでしょうか。

すると、全ての回答が全文表示されます。
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.8

ANo.3 の補足では >○を貼り付けようとしたときのように、 >値のみとか数式とかの貼り付けの選択画面で と、有りますので ANo.7 さんの方法(置換えしないで「空白を無視する」で貼り付け)なら うまく行くのでは有りませんか?

keromaru2005
質問者

お礼

回答ありがとうございます。 最初はできなく、いろいろ試し、 BOOKを一度保存してから、通常の形式選択の画面で「値のみ」、「空白を無視」で貼り付けることができました。

すると、全ての回答が全文表示されます。
  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.7

試してみました。 ○が入力されたセル以外のセルが空白であれば、Book2に貼り付けるとき、「形式を選択して貼り付け」で、「空白を無視する」にチェックを入れて「OK」すれば可能のような気がします。 お試しください。

keromaru2005
質問者

お礼

いろいろ試してみてわかりました。 ためしに作ったBOOKがいったん保存されていないままに コピーをすると「図とかビットマップとかの貼り付けの選択画面」 になり、保存すると、通常の形式選択の画面で「値のみ」、「空白を無視」で貼り付けることができました。(なぜ、そんな違いがでるかはわかりません) ありがとうございました。

keromaru2005
質問者

補足

形式を選択して貼り付けにすると 図とかビットマップとかの貼り付けの選択画面になります。 NO6さまはできていらしゃるのですが、 私がやっても、貼り付けの選択画面が異なってしまいます。

すると、全ての回答が全文表示されます。
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.6

>図とかビットマップとかの貼り付けの選択画面になります 私も試して見ましたが、ちゃんと出来ました 「図としてコピー」したか、コピーした中に、図形が入っているのではないでしょうか?

keromaru2005
質問者

補足

単純にBOOK1のA1とA3に○と、BOOK2のA2とA4に1を入れて(またを○を入れても)BOOK2のセルA1~A4をコピーし、 BOOK1のA1を開始位置にして、形式選択ではりつけているのですが。 どうしてそんな違いがでてしまうのでしょうか、さっぱりわかりません。

すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.5

他の方々の書かれているとおり、できればBOOK1とBOOK2も一つのブックにまとめて他のシートにマージ結果が反映されるようにするのが簡単だとは思いますが、とりあえず質問文に書かれた通りの動作をするマクロを書いてみました。 Sub シートを1つにまとめる()   Dim B1 As Workbook, B2 As Workbook   Dim R As Range   Set B1 = Workbooks("Book1.xls") '実際の名前に修正してください(ブック1)   Set B2 = Workbooks("Book2.xls") '実際の名前に修正してください(ブック2)        For Each R In B1.Sheets(1).UsedRange     If R.Value = "○" Then       B2.Sheets(1).Range(R.Address).Value = R.Value     End If   Next End Sub Book1の中の○がついている箇所をBook2の同じセルにコピーするマクロです。 なお、Book1.xls、Book2.xlsの部分は実際の名前に修正してください。なお、作業しているシートはどちらのブックも1番目のシートと仮定しています。 ファイルのバックアップをとっておいてから試してくださいね。

keromaru2005
質問者

お礼

ありがとうございます。 教えていただいたマクロをどういう風に入れ込むかさえ、 わからない一般(以下???)ユーザーなのですが、 参考書などを読んで試してみたいと思います。

すると、全ての回答が全文表示されます。
noname#96725
noname#96725
回答No.4

こんばんは。 私もやってみました。 >BOOK1のシートの情報をBOOK2のシートに貼り付けたいのです どうしてもこれでなくてはならないのでしょうか。例えばsheet3に結果を表示させる方法でも良いのなら sheet3のA1セルに =IF(Sheet1!A1="○","○",IF(Sheet2!A1="○","○","")) を貼り付け、それを必要な列と行にコピペしてやればsheet3にはご質問者さんが表示させたいsheet2と 同じ結果が出てきます。 No1さんが仰るように第3のシートに表示させる以外で実現する方法があるのかどうかは知らないので、ご参考意見として回答します。

keromaru2005
質問者

補足

時間がかかる作業と思われるために、 2台のPCで同時並行ですすめたいと考え、 BOOKを2つにしたいという希望があります。

すると、全ての回答が全文表示されます。
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.3

形式を選択して貼り付け-加算、で出来るかと思ったんですが、文字はダメなんですね そこで、 BOOK1で、編集-置換えで、○を1(数字の1)に置換えて、コピーし BOOK2で、形式を選択して貼り付け-加算、もう一度、編集-置換えで、1を○に置換え で、どうでしょうか

keromaru2005
質問者

補足

ありがとうございます。 ためしてみました。しかし形式を選択して貼り付けにすると ○を貼り付けようとしたときのように、 値のみとか数式とかの貼り付けの選択画面でなく、 図とかビットマップとかの貼り付けの選択画面になります。 私のやりかたが間違っているでしょうか。

すると、全ての回答が全文表示されます。
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

○が入力されたセル以外のセルは、空白ですか?

keromaru2005
質問者

補足

そうです。空白です。

すると、全ての回答が全文表示されます。
  • onntao
  • ベストアンサー率32% (108/332)
回答No.1

数式とデータの同時入力はできないので Sheet3のA1に 数式:=Sheet1!A1&Sheet2!A1 などとし、ご希望の範囲まで数式をコピーなされるというのはいかがでしょう

keromaru2005
質問者

補足

早々と回答をありがとうございます。 実際のケースでも入力している情報は「○」だけです。 シート全体をコピーして、もうひとつのシートに形式を選択して貼り付けようとしたら、できませんでした。 お客さま10000人の情報入力(ただ、8つの項目のうちあてはまる1項目のみに○を入力するもの)を2名で行いたいのです。 ただ、難点なのが、1~5000行、5001~10000行ときれいに分けて担当ができなくて、各自入力するセルの行は不連続なのです。 また、お客さま10000人の並びはランダムですが、それは崩してはいけないという条件がついております。

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

関連するQ&A