• ベストアンサー

エクセルで出来ますか?

エクセルで12枚のシートに同じ表が1つずつ作ってあります。表の中は文字のセルも数式のセルもあります。各シートの同じセルにあるものを選び出して、別の新しいシートにある表の指定した部分に貼り付けたいのです。要するにシート間の串刺しをして別のところに貼り付けたいわけです。例を書きます。 元の表というのは例えば、「シート1はAさんのデータで名前、住所などが入力してある。シート2はBさん、シート3はCさん・・・」で、名前だけの一覧表を新しいシートに作る、ということがしたいのです。質問の意味わかっていただけましたでしょうか?よろしくおねがいします。

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

  • ベストアンサー
noname#11476
noname#11476
回答No.7

不規則なのは残念ですね。VBAからはシートを番号で参照できるので簡単なのですが。 もし、VBAを使われるのであれば、 Sub GetSheetName() Dim i As Integer Dim dist_name As String Dim sname As String dist_name = ActiveSheet.Name For i = 1 To Sheets.Count sname = Sheets(i).Name If sname = dist_name Then Exit For ActiveCell.Offset(i - 1, 0).Value = sname Next i End Sub のような簡単なものを書けば良いと思います。 上のコードは、シート名の列を作りたいシートのセル位置にカーソルを持っていき、マクロを実行すると一番目のシートからカーソルのあるシートまでのシート名のリストを作ります。 だいぶ前にやっぱり同じ様なことをやりたくて作った物です。 では。

emutann
質問者

お礼

せっかく回答をいただいたのに実はVBAについては全くわからず、教えていただいた式をどうしたらいいのかすらわからず・・・という状態でした。で、早速VBA(VB)の勉強をはじめたところです。今は少しだけですがわかります。 がんばります! 悩んでいたことは、シートが8枚と少なかったので、勢いにまかせて”貼り付け”でなんとか通り抜けました。はははつ! 全部自分で理解できるようになったらやってみます。

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

その他の回答 (7)

  • UChast
  • ベストアンサー率31% (7/22)
回答No.8

補足です。集計という表現は適切ではなかったかも知れませんが、mickjey2さんのようなコードの中に Worksheets(dist_name).Activate R = cells(Activesheet.Rows.Count, C).End(xlup).Row Worksheets(dist_name).cells(R+1, C).value = _ Worksheets(i).cells(RR,CC).value 見たいなコードを入れれば可能かと思います。また、「シート間の串刺し」に関して既にヘルプはご覧になりましたか、、、。 注)R、RRは行変数、C,CCは列変数として目的に応じて設定してください。 固定値であれば、定数としてもかまいません。

emutann
質問者

お礼

ありがとうございました。実はVBAについては全くわからず、教えていただいた式をどうしたらいいのかすらわからず・・・という状態でした。で、早速VBA(VB)の勉強をはじめたところです。教えていただいたコードが読める ようになるのはいったいいつになるのやら・・と思いつつ。 悩んでいたことは、シートが8枚と少なかったので、勢いにまかせて”貼り付け”でなんとか通り抜けました。

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

もし、私がやるとすると、シート名をSheet1,Sheet2,....と最後に数字をつけていく名前にします。 こうやると、串刺しを入力するシートで、どこかのセルにSheet1と入れて、そのセルをマウスでドラッグ(右下の黒ポチ)すれば以下sheet2, sheet3, ...という一列ができあがります。 これさえすれば、後はIndirect関数で該当のセルを参照すればOKです。 たとえば、A1~A10にシート名が入っていて、各シートの C1セルを参照する場合は、 INDIRECT("'" & A1 & "'" & "!$C$1") をB1に入れて、後はB2~B10にコピーすればいいわけです。 シート名が規則的じゃない場合は、VBAなどを使わないとちょっと困難かと。 (もしかしたらやり方があるかもしれませんが、ちょっと思いつきません)

emutann
質問者

お礼

なるほど、シート名を規則的なものにかえてしまうんですね。シート名が個人名なのでちょっとつかいにくいかな?と思いましたが、このアイデア何かの時に使わせていただきます。indirect関数 勉強します。 ありがとうございました。

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

個人の複数のデータがシートごとに入力(定型)されていて、特定の項目(複数でも可)のみを別のシートに集計するということであれば、VBAを使えば簡単にできます。10だろうが1000シートだろうがあっという間にできます。集計したい項目(セル番地)を変えることも可能ですし、集計先を他のブックやシートの特定の位置にコピーすることも簡単にできます。シート数の分だけ、項目の数だけコンピューターに自動的に集計させることも可能です。新しい個人データが増えた場合や項目数が据えた場合にも対応できます。最終行に自動的に追加していくことも簡単にできると思います。先ずはマクロに基本動作を記録して、不要部分を削除し、ループでまわせばOKです。具体的にシートのどのセルにデータが入っているかがわかれば、サンプルプログラムを作れますので、必要であれば詳細をお聞かせください。

emutann
質問者

補足

あのー、、集計じゃないんです。bupu4uさんの回答の中にあるように、「(各人毎のシートが全く同じ構造=同じ場所に対応するデータがあったとして。) 新しいシートで、セル毎に参照ブック名を変えられるか?ですよね」・・・これなんです。シートが100枚あったとして、特定の項目(例えば住所)だけを別のシートに100行楽に貼り付けられないか、ということです。100行ひとつひとつに参照セルを打ち込むのは手間ですので。 なんかエクセル詳しそうなので期待してま~す! ps.いただいた回答おもしろそうですね。今回の質問とは別に、使ってみたいです。でもむずかしそう・・・

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

#4の訂正です。 参照ブック名=>参照シート名 ブック名を1個づつ変えていくしかないと=>シート名… です。

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

補足に対する回答というか提案です。 (各人毎のシートが全く同じ構造=同じ場所に対応するデータがあったとして。) 新しいシートで、セル毎に参照ブック名を変えられるか?ですよね。 これはうまい案が思いつきません。1個入力したセルの数式をコピーして人数分だけ貼り付ける。あとは式を編集してブック名を1個づつ変えていくしかないと思います。このとき数式表示をオンにしておくと少し楽かもしれません。 ただし、名前のシートができたとして、次に住所のシートを作るのだったら簡単ですね。名前のシートをそのままコピーして参照セル名だけ 検索_置き換え するだけですから。 多分すでにご存知のことだと思いますが。m(__)m

emutann
質問者

お礼

シート名をたくさん打つのが大変なので簡単にできる方法がないかな、と思って質問しました。 置換ですね。そうですね・・・なるほど・・・ ありがとうございました。

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

他シートのあるセルの内容をリンクさせるには、 1.リンク先のセル内で半角の「=」を入力します。 2.リンク元のセルをクリックで指定し、Enterで確定します。 これで、リンク先にリンク元の内容か反映されます。 又、他ブックでも同じ様な方法でリンクが出来ます。

emutann
質問者

お礼

私の質問の仕方が不十分だったようですね。シート名をたくさん打つのが大変なので簡単にできる方法がないかな、と思って質問しました。 でも早速の回答ありがとうございました

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

名前の一覧表のシートのセルにに以下のように入れてください Sheet2!B1(sheet2の行1列Bを表示する) 行列の表示は設定により違うかもしれませんが シート名+!+表示元のセル でよいとおもいます。 やり方としては、一覧表のシートでデータを表示するセルを決め そこを選択してエクセルの数式の編集 (ツールバーの「=」が表示されているところ)で「=}を押し 目的のシートに移動し、表示するデータ(セル)をクリックする。 そして「OK」を押せば一覧にほかのシートのセルの内容が表示されるはずです。 説明が下手ですが、、^^;

emutann
質問者

お礼

私の質問の仕方が不十分だったようですね。シート名をたくさん打つのが大変なので簡単にできる方法がないかな、と思って質問しました。 でも早速の回答ありがとうございました。

emutann
質問者

補足

早速の回答ありがとうございます。私にはおっしゃることがよく理解できてないんでしょうか?この方法だとシートが100枚あったらシート名を100回入力するというようにとれるんですが・・・ もしそうなら、コピーアンド貼り付け、またはリンク貼り付けの操作と手間が変わらない気がするんですけど。シート名を1つ入れさえすれば(例えばシート1)、表示先のシートでコピーアンドドラッグするとシート2以降のデータが表示されるんですか? 理解不足ですみません。よろしくおねがいします。

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

関連するQ&A