• ベストアンサー

エクセルで、シートごとの計算結果を別の表にする方法

同じ形式のデータシートが100枚ぐらいあり、このシート上で計算をした結果が10個ほどあります。この結果の一覧表(100×10)を作り、グラフを作成する必要があります。 このとき、一覧表の先頭のセルにシート名とセルの番号を計算式としていれて、つまんで引っ張り100までカウントアップして計算式を入力させたいのですが、うまくいきません。いちいち入力するのは邪魔くさいので、いい方法があれば教えてください。 VBAはよく分かりませんが、解決するならやってみますのでよろしくお願いします。

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

>B1=INDIRECT("'Data" & $A1 & "'!A$1") >C1=INDIRECT("'Data" & $A1 & "'!B$1") >と入力して横に引っ張ってみましたがカウントアップしてくれません。 B1の中身を変えるだけでは、横に引っ張る事は出来ません(「"'!A$1"」の部分が文字列として扱われているため)。 ちょっと工夫が必要ですね。 以下のようにしてみてください。 1:B1にA、C1にB、D1にC…と入力 2:A2に1、A3に2、A4に3…と入力 3:B2に =INDIRECT("'Data" & $A2 & "'!" & B$1 & "1") と入力 4:B2のセルを適当な範囲に複写 A列で、取得するシートの番号を指定、1行目で、取得する列を指定です。 取得する行は、INDIRECT… の末尾の『"1")』の部分ですね。 少しInDirect()の括弧の中身を説明してみますね。 Indirect関数は、セルのアドレスを文字列として、括弧の中に書くと、そのアドレスのセルの内容を返します。 =Indirect("A1") と書けば、A1のセルの中身を返しますし、 =Indirect("SHEET2!A1") と書けば、「SHEET2」と言う名前のシートのA1のセルの値を返します。 シート名!セルアドレス は、他のいろんな場所でも使えるんですが、シートの名称にスペースが含まれる場合は、シート名をシングルコーテーションで囲んで、「'Data Sheet'!A1」のように記述する必要があります。 $マークについては、ヘルプの「セルとセル範囲の参照について」の中の「相対参照と絶対参照」に載っています。 イルカ君か冴子先生に「セルとセル範囲の参照について」と聞いてみてください。 (簡単にいうと、「引っ張るときにどのような動作をするか」です。 「A1」のAの前に$が付いてると($A1)、横に引っ張ってもAの部分は変化しません。 同様に1の前に$があると(A$1)、縦に引っ張っても1の部分が変化しません。 $A$1だと、縦に引っ張っても横に引っ張っても、変化なしです。) あと、式中の「&」は文字列を結合する演算子です。 1 + 1 = 2 と同様、 "A" & "1" = "A1" になります。 "SHEET" & A1 なら、SHEET という文字列と、A1のセルの中身を結合したものになります。(A1 に 1が入力されていれば、SHEET1 という文字列になる。) 一度、=INDIRECT("'Data" & $A2 & "'!" & B$1 & "1") のかわりに、 = "'Data" & $A2 & "'!" & B$1 & "1" として、試してみてください。 連続するシートの簡単な名づけ方は、聞いた事がありません。(多分無いと思います。) マクロを使えば、自動処理で名付けることが出来ると思うんですが、それだと「簡単」とは言えませんね(^^:。

bantam
質問者

お礼

ARC先生ありがとうございました! ばっちりですぅ!!  大変詳しい説明でよく分かりました。(シート名!セルアドレス)のことも理解でき、これからもっと活用できそうです。 あとA、B、C...は連続コピーできないんですね?これができたら言うことなしですが... ちなみに冴子先生とはちょっと、ウマが合わないようです。 またよろしくお願いします。 邪魔くさがりのbantamでした。

その他の回答 (3)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

>あとA、B、C...は連続コピーできないんですね?これができたら言うことなしですが... あれ?、手元の機械では出来ますが… っと、これは一度「ユーザー設定リスト」で設定しないといけないみたいですね。 [ツール]-[オプション]-[ユーザー設定リスト]で、設定してやれば、次から連続コピーできるようになります。

bantam
質問者

お礼

ありがとうございました。 ちょっと戸惑いましたけどできました。前から[ユーザー設定リスト]はなんだろうと思ってました。 でも、ここで打ち間違えたら、やっぱりだめですよね。 さぁこれで仕事がはかどりそう!です。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

シートの名前が[Data1]~[Data100]で、各シートのZ1のセルに計算結果が入っているとします。 1:集計を行うシートのA1のセルに1を入力 2:同様に、A2に2,A3に3…A100に100と入力(連続データを作成) 3:B1に =INDIRECT("'Data" & $A1 & "'!Z1") と入力 4:B1のセルをコピーし、B1:B100の範囲に貼り付け としてみてください。 3:のInDirect関数の中身を、適当に替えてやれば、他のセルの中身も取り出すことが出来ます。 この説明で分かりにくければ、補足をお願いします。

bantam
質問者

お礼

ありがとうございました!!!何とかできそうです!!! あと少し欲を言わしてもらうと(^^;) 各シートの計算結果のセルZ1が、A1~Z1の場合の、B1への入力式を教えていただきたいと思います。 B1=INDIRECT("'Data" & $A1 & "'!A$1") C1=INDIRECT("'Data" & $A1 & "'!B$1") と入力して横に引っ張ってみましたがカウントアップしてくれません。 (たぶん基本的に分かってないと思うんですがとにかくやってみました) B1のセルの入力式だけで横に引っ張って、下に引っ張ると表が出来上がるようにしたいんですが....(^^; できるんでしょうか? さらに、連続シート名のつけ方の早い方法とかあるんでしょうか? さらにさらに、(!)とか(’)とか($)とかの使い方はHELPで参照できるんでしょうか? たくさん聞いてすみませんが、よろしくお願いします。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

エクセルにはいわゆる普通のコピー&ペーストの操作のほかに、リンク貼り付けというのができます。 シート1のA1~C4の内容をそのままシート2の任意の場所にコピーするんですが、このとき単純なコピーではなくシート1を参照するようにリンク状態でコピーされます。 当然シート1が変化したら、それに伴ってコピー先のシート2も変化します。 貼り付けの時に「形式を選択して貼り付け」を選ぶとダイアログが出てきて「リンク貼り付け」ボタンがあります。 「OK」ボタンだとそのまま貼り付けと鳴ってしまいますので「リンク貼り付け」を選んでください。 多少面倒ですが、一気には作れそうも無いので・・・

関連するQ&A

  • VBA 別シートの計算表

    Excelについて。 シートAに、計算表があります。 セルa1に入力した値によって、いくつかのExcel関数を利用して、 セルb1に結果を出力しています。 いつも、手入力でセルa1に値を入力して結果を求めていますが。 今度、シートBに膨大な入力するための数値があるので、VBAで自動化できないかと考えています。 今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 シートAのa1に入力値を代入して、すぐに結果b1の値を結果出力セルに代入していいのでしょうか? 計算表(シートA)での計算を時間をおく必要があるのでしょうか?=一旦、他のセルを選択するなど。 よろしくお願いします。 ・計算表での計算時間は、1秒未満です。 ・計算表の計算過程もVBAで書けば済む話ですが、プログラミングには疎いので、計算表をそのまま利用したいと考えています。=入力の代入だけVBAで書いていきたいと思います。 ・その他、アドバイスなどいただければ幸いです。 よろしくお願いします。 Excel2010

  • Excelで表計算結果のみ表示するには?

    Excelで表計算結果のみ表示するにはどうすればよいのでしょうか? 例えば、セルA2に「=A1+1」という表計算結果を表示させたいとします。もしもセルA1が「3」という値の時は、セルA2には「4」と表示されます。ここで、セルA2の表計算結果だけを残して、セルA1の表示を削除したいのですが、「=#REF!+1」みたいにエラーになってしまいます・・・このようなとき、表計算結果のみを表示させることはできないのでしょうか?表計算結果を見ながら自分で計算結果を入力していく方法しかないのでしょうか? データーが大量にあるため、提出レポートには計算結果だけを載せる必要があるのです。もし良い方法がありましたら教えてください。よろしくお願いします!

  • マクロで計算した結果を自動的に表にする方法はないでしょうか?

    知人から頂いたエクセルファイルで、あるパラメーターを入力すれば計算結果がセルM1に出るといったマクロが組んであるファイルがあります。ちなみに、パラメーター入力はセルへの入力ではなく、メッセージボックスが表示されそこに入力する方法です。 パラメーター量は膨大であるため、何とか効率的に計算結果表を作成したいのですが、何か良い方法はないでしょうか? 高度なVBA知識が必要となるようであれば諦めて地道に頑張ります。

  • EXCELで全てのシートを参照した一覧表の作成方法

    色々な情報を入力したSheetが50枚あり、 あまり手間のかからない方法で、 この50枚の中で、ある特定のセルの情報だけを参照させて一覧にした表を作成したいと思っています。 具体的には、Sheet名が”一覧表”というシートを作成し、 この”一覧表”シートの B1 セルには Sheet1 の A1 セルの値を表示させ、 次いで、同”一覧表”シートの B2 セルには Sheet2 の A1 セルの値を、 次いで、同”一覧表”シートの B3 セルには Sheet3 の A1 セルの値を、                       ・                       ・                       ・ 最後に、同”一覧表”シートの B50 セルには Sheet50 の A1 セルの値を、 といった形で、一覧表を作成したいです。 ご教示いただけますでしょうか。 よろしくお願いいたします。

  • EXCELの計算結果を値コピーするとおかしな値になる

    EXCEL2003を使っていますが、ふとしたことで気になることがあります。 下記のような簡単な計算とコピー作業なのですがコピーした値がおかしいのです。 ・セルA1に420.2を入力する。 ・セルB1に420.3を入力する。 ・セルC1に =A1-B1 の計算式を入れる。 ・セルD1にC1のコピーを形式選択貼り付けで”値”のみ貼り付けする。 すると、セルD1には-0.1が表示されるのですが、ワークシート上段の普段入力とかをするエリアには-0.100000000000023が表示されています。 普通は別に困らないのですが、計算結果が-0.2とかになると-0.199999999999989になりヒストグラム等では頻度のカウントがひとつ繰り上がってしまいます。 (値コピー先ではなく計算結果でヒストグラムをとっても同じ結果になります。) Officeのヘルプも一応見てみたのですが、検索文言がややこしくて見つけられませんでした。簡単なことを見逃しているかも知れませんがアドバイスお願いします。

  • EXCELでの計算結果のみをコピペしたい

    Windows Vista Office2007 です。 Sheet 1 で計算した結果のみをコピーして、 Sheet 2 の任意セルへ貼り付けたいと思います。 計算結果のセルを右クリックして、「形式を選択して貼り付け」を クリックしたいのですが、「形式を選択して貼り付け」が活きていません。 どのようにすれば宜しいのでしょうか。 よろしくお願いいたします。

  • エクセルで別の表を貼り付ける方法

    仕事で使うチェックシートをエクセルで作っています。 セルの数が多く、行数、列の幅を計算して作ったつもりが、後で合わなくなり困っています。 こんな場合の良い方法を教えてください。 ○ プリントした用紙に手書きで書き込む目的なので関数などは使わず、単純な表と文字だけですが、1シートの中に複数の表が入ってます。 ○ 用紙はA3サイズと大きく、びっしりとした表なのでたくさんの列と行があります。 ○ 完成後、このシートの中にもう1つ表を入れなければならない事に気づいたのですが、既存のセルを使えば列の幅が合わずおかしくなります。 オートシェイプで文字を貼り付けたり、グラフや図を貼り付ける感覚で、別の表(もしくはシート)をシート上に貼り付ける方法はありますか? もしくは既存のセルの列、行の幅を変えずにもう1つ違う列、行の幅の表を入れる方法を教えてください。 私が分かってないだけで、多分簡単な操作でできる事なんだと思いますが、無知な私を助けて下さい。

  • エクセル 違うシートに計算式がある場合

    エクセル2000を使っています。 下記の計算をしたいのですが、方法を教えてください。 1.Sheet1 A1とB1に計算したい元の数値が記入されています。 例えば、A1=1 B1=2 2. Sheet2 のA1とB1に数値が入る事としてC1に計算結果が出るものとします。 3. Sheet1のC1にSheet2のC1の内容を表示したい。 4. Sheet1 A2、A3・・・・・、B2、B3・・・・・に入力した後で、C2、C3・・・・・・に Sheet2のC1で計算させた結果を自動的に入力したい。 別の言い方をすれば、Sheet2 のA1・B1が関数の入力するところにあたり Sheet2のC1が関数の出力(というか、計算結果)にあたります。 Sheet1からSheet2を関数のように使いたいのです。 Sheet1 ____ A_____B_______C 1___1_____2______3 2___2_____3______5 3___5_____8______13 4___9_____1______10 5___4_____5______ 9 Sheet2 ____A_____B_____C 1________________ =A1+B1 2_____________________ こんなイメージです。 Sheet2で計算の入力に対応するセルがA1・B1 計算結果が書いてあるのがC1 実際は、大きな表を参照しながら計算するので、色々計算した結果(途中計算は他のセルも使います)がC1に表されます。 以上、よろしくお願いします。

  • エクセル表計算

    <エクセル表計算の表示> 表計算表を作成後、セルC・D・E・に任意の数値を入力後セルF・G・に「四則演算」の計算結果をアウトプットしたいんです。 セルF・G・に数式を入力すると「#DIV/0!」が表示されます。 「#DIV/0!」が表示されていても計算結果は手計算で検算も間違いありません。が数値入力前に「#DIV/0!」の表示がどうも頂けません。「#DIV/0!」を表示しないで良い方法をどなたかご教授下さいます様宜しくお願いいたします。

  • EXCEL VBAで複数シート内のセルをまとめて表を作成

    EXCELマクロ(VBA)を教えてください。 なやんでいることは、 目的:シート1からシート5までの表の値をシート6に一覧表を作成させる。 ・シート1からシート5まで シート内の表からセル値をコピーしてマクロで(ボタンか何かで)シート6にシート1からシート5のセル値を貼り付けていくような動作をさせられるようなプログラムをつくりたいです。    表(一覧)を作成させたいので わかる方プログラミングを教えてください。よろしくお願いします。

専門家に質問してみよう