• ベストアンサー

エクセルで出来ますか?

エクセルで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

  • エクセルについて教えてください

    単純なエクセルの表を作り、一つのセルに「例:=5+5」と入力をすると、「=5」と入れた時点で、別のセルへ移動してしまい、数式が入力できません。なぜでしょうか?

  • エクセル  『選択して入力する』  作り方

    エクセルで作られた一覧表で、 セルの右側に三角形がついていて そこをクリックすると、そこに打ち込む文字を選択できるというものを見ました。 ちょっと、文章が分かりづらいような気がするので例で言うと 一覧表で、たとえば担当者を入力するところのセルの右側に三角形がついてて それをクリックすると、人の名前がいくつも出てきて、そこから選ぶだけで入力できるってことなんです こういうものって、どうやったら作れるんですか?

  • EXCELで顧客管理

    EXCELで顧客管理をしたいと思います。 一行に・・・  名前、フリガナ、郵便番号、住所、生年月日・・・・・・ と一つずつのセルに入力してあります。 500名分を7シートに分けて打ち込んであります。 (1)「フリガナ」の2文字を入力すると適合する顧客が別シートに一覧として表示されるようにしたい。 (2)「フリガナ」を入力して・・・という作業をする入力フォームを作りたい。 (フリガナを入力する→検索ボタンをクリック→表に一覧が表示されるといった形式のもの) 以上、2点について教えていただければ幸いです。 これは可能なことなのかもよくわかりませんがよろしくお願いします。  

  • エクセルの計算式の入力について

    エクセルの知識が殆ど無いものです。 数字の入力で誤って計算式を消してしまいました。 シート1に金額一覧表があり、シート2以降にそれぞれ金額が反映されるように なっています。数式バーには『=月払!C…』とあり、…にシート1の金額のセル位置 の数字が入ります。シート2とシート5の計算式を元に戻すには どうしたらよいのでしょうか?直接数式バーに手打ちで入力してもよいのでしょうか? 教えてください、よろしくお願い致します。

  • エクセル Excel 関数or条件付き書式

    あけましておめでとうございます(*^_^*) 新年早々教えてください! セルに指定された値(文字列)を入力すれば 自動で別のシートの別のセルの書式が変更される (あるいは関数により自動で値が入力される) 方法を探しています! エクセルマスターの方お願いします! 【具体的に…】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10の 書式が 自動変更される(例-フォントが赤になる) もしくは 【具体的に…(2)】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10に 指定された値(例-厄年)が 自動入力される そんな方法を教えてください! どちらもできれば最高です!!

  • エクセルについて

    sheet1には個人情報(名前、住所、電話番号、生年月日)を入力した一覧表を作成し、sheet2には履歴書のような形式で雛形を作ります。sheet1に入力したものが、sheet2のそれぞれの項目のセルに飛ぶにはどうすればよいでしょうか?教えてください。

  • エクセルについて

    セルのある数式内にある、例えば、【 =A1*0.2 】の数式があったとして、 別のあるセルに数字を入力(例えば5とか6などの整数)すると、 A1の部分のセル指定を、 任意に別のセルに指定を出来るようにしたいのですが、 例として, B2セルに5と入れると、T18セルの数式の【=A1*0.2】 のセル指定部分が、S15にしていされる。 6と入力すると、S16に指定される。 7と入力すると、C5に指定される。 と言うような、関数、数式を知りたいのですが、、 ご享受願います。

  • エクセルについて質問です。

    ユーザーフォームの使い方で、テキストボックスやコンボボックスのControlSourceを,フォームを開いたのとは別のシートのセルにあてたいんですけど、できますか? 同様に、コンボボックスのRowSourceのリストも、別のシートの値を拾いたいんです。 具体的に言えば、ユーザーフォームを開くのは、常に「Sheet1」であって、入力した内容を表示するのは「Sheet2」なのです。 コンボボックスのリストは本当は、「Sheet3」の値を拾いたいのです。 今はよくわからないので、全部「Sheet1」にリンク(?)させて、値を取得させるようにしてます。 それと、セルの数式の中に別のセルの数値を代入できますか? 例えば、あるセルの数式が「=Sheet2!A4」だとしましょう。 この場合の「Sheet2」の「2」に、例えば、ある別のセルの値を代入して、 「=Sheet3!A4」とかにしたいのです。 つまり「=Sheet”A1”!A4」みたいにして、「A1」のセルの値が 「2」、「3」に変われば元の数式も変わる、みたいに。 同じように、セルの範囲につけた名前や、リンクするファイルの名前も数式の変数に入れられるのでしょうか? とりあえず、セルの数式の中に、別のセルの値を”文字”や”数値”として入れたいのです。 ちょっと説明がわかりにくいかもしれないけど、教えて下さい。

  • EXCEL 2003 数式中の参照セルについて

    数式であるシート(シート1とします)中の値として、 別シート(シート2とします)のセルを参照するとします。 (例a) シート1中の値 =シート2!J36 ※ J36は例 ここまではよいのですが、 上記の行番号「36」の部分を 更に別の参照値から引っ張ってくることは可能でしょうか? やりたいことのイメージ例として以下に記載します。 (例b) =シート2!J(=A1) ※ここの「A1」はシート2中の参照するセル番号を指定するための シート1中に設けたセルとします。 ※上記の数式は実際にはエラーになり入りません。 最初の例aでは、シート2中の参照するセル番号を数式編集して 指定しないといけないため、参照箇所が多いと大変ですが、 もし、例bのような指定ができればシート2中の参照するセル番号の 入力は一箇所ですみ楽になりありがたいと考えています。 わかりにくい文章ですみません。よろしくお願いします。

  • エクセル値の貼り付け

    数式及び関数を多数使用しているSheet1があるとします。(ほとんどが表) 最終的にこれは元請けにエクセルデータとして提出します。 しかし、提出する際には各セルが数式及び関数が入った状態ではなく、文字列(値)としの状態で提出したいと考えています。 一度、Sheet1をコピーしてSheet1(2)をつくり、そのなかの文字及び数式を削除し、表(罫線)だけの状態としました。そしてSheet1を全体を範囲指定しSheet1(2)に『形式を選択して貼り付け→値』としようとしたのですが、『この操作には、同じサイズの結合セルが必要です』とエラー表示がでて貼り付けできませんでした。ほかにも列を指定したりだとかA1から範囲指定したりだとかいろいろ試しましたが結果は同じでした。 おそらく原因は、表の中にいろいろな形でセルを結合しているからだと思います。当然、ひとつのセルでやれば値だけの貼り付けはできます。しかし膨大な表なのでそういう訳にもいきません。 なにかいい方法はありませんか。

専門家に質問してみよう