- ベストアンサー
Excelで複数データをまとめる方法とは?
- Excelの関数を使用して、複数のシートの特定の複数セルを一枚のシートに順に書き出す方法について知りたいです。
- 183枚のシートに分かれているデータを一つのシートにまとめるために、Excelの関数を活用する方法を教えてください。
- Excelでマクロや関数の知識がなくても、複数のシートに分散しているデータを一つのシートに集約する方法について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#2です。 シートの名前とA列の内容は本当に同じですか? 例えば、どちらかに半角数字を使って、他の方に全角数字を使っているということはないですか? あるいは、先頭か後尾に空白が入っているとか。 試しに、シート名をそのままコピーしてA列に張り付けてみてください。 あるいはA列は日付データが入っていますか?私は日付をそういう風に書かないのでうっかりしていました。 日付データなら、見た目は4月1日でも、中身は全然違う内容なので、確かに参照エラーを出します。 A列を「4月1日」と入力します。勝手に日付データに変わるのであれば、「'4月1日」としてみてください。 もしA列が日付データでなければまずいのであれば、他に隠し列を作ってそちらに文字列形式の日付を書いてもいいと思います。 また、ある種のシート名は確かにエラーを出します。どういう種類のシート名がいけないのかは知りませんが、そういうことが起こります。 その場合はこう書くこともできます。 =INDIRECT("'" & A3 & "'" &"!"&"A1") ただ、4月1日から4月3日までは手元でも試してみましたから、アボストロフィでくくらなくてもいけるはずです。 思いつく原因はそのくらいです。
その他の回答 (4)
- bunjii
- ベストアンサー率43% (3589/8249)
集計シートのA列は日付のシリアル値かと思われます。 INDIRECT関数でシート名を指定するとき文字列に変換しなければなりませんので次のようにしてください。 B2=INDEX(INDIRECT(TEXT($A2,"m月d日")&"!$a$1:$e$2"),2,MATCH(B$1,INDIRECT(TEXT($A2,"m月d日")&"!$a$1:$e$1"),0)) 但し、各日付の記録がA2:E2セルのみに限られているものとします。 また、各日付のシートの動物名の並びが集計シートと同じであればMATCH関数の代わりにCOLUMN関数に置き換えられますので簡略化できます。 B2=INDEX(INDIRECT(TEXT($A2,"m月d日")&"!$a$1:$e$2"),2,COLUMN()-1) B2の数式を右と下へコピーすれば目的通りになるでしょう。
#2です。 ごめん。間違えた。 4月1日の行のキリン、ライオン、パンダ、ゾウの式はそれぞれ =INDIRECT(A3 & "!" & "A2") =INDIRECT(A3 & "!" & "B2") =INDIRECT(A3 & "!" & "C2") =INDIRECT(A3 & "!" & "D2") としてください。 A3のところを、A1と書いてそのまま送ってしまいました。
補足
回答ありがとうございます。 丁寧な説明や解説サイトへの誘導助かります。 No.2,No.3の説明通り集計シートのB3に=INDIRECT(A3&"!"&"A2")と打ち込んでみたのですがB3セルには#REF!と表記されてしまいました。 >「4月1日」のシートのキリンのデータ、つまり1000が表示されるはずです。 画像が見づらくて申し訳ありません。4月1日シートに記載されている値なのですがキリン、ライオン、パンダ、ゾウから順番に 10:00,1:00,8:00,5:00 となっております。 私見ですが値が1000であろうと10:00であろうと変わりはないはずですがどうしてなのでしょうか? ちなみに値のセルにはユーザー定義で「h:mm」を選択しております。
INDIRECT関数を使うと簡単にできそうです。 私のアイデアでは、まず前提条件として、集計シートのA列の項目名と各シートの名前が同じである必要があります。 添付画像によるとそうなっていますね?「4月1日」のシートのデータを、集計シートの「4月1日」の列に表示するようになっています。 まず、集計シートの4月1日のキリンの項目(つまりB3のセル)にこういう式を書いてみてください。 =INDIRECT(A1 & "!" & "A2") 意味は下に書きますが、まずは騙されたと思ってこう書いてください。 すると、「4月1日」のシートのキリンのデータ、つまり1000が表示されるはずです。 INDIRECT関数についての説明は下のウェブページに載っています。 http://www.excel.studio-kazu.jp/func/indirect.html 今の例で言えばこういうことです。 セルA1には"4月1日"という文字列が入力されていますから、A1 & "!" & "A2"はエクセルの内部で次のような文字列に展開されます。 "4月1日!A2" これはシート「4月1日」のセルA2を参照せよ、ということを意味します。 試しに =4月1日!A2 とどこかに入力してみてください。やはり「4月1日」のシートのキリンのデータ、つまり1000が表示されます。 INDIRECT関数と言うのは、このように文字列をセルへの参照と解釈して、本当にそのセルを参照する関数です。 4月1日のライオン、パンダ、ゾウの項目にはそれぞれ次のような数式を入力します。 =INDIRECT(A1 & "!" & "B2") =INDIRECT(A1 & "!" & "C2") =INDIRECT(A1 & "!" & "D2") B2、C2、D2と言うのはそれぞれのデータのありかです。 これで4月1日の分が完成しました。 次はこれを下に全部コピーしていけばいいわけです。 No1の方のように、右隅をつかんで下へドラッグしてもいいです。 私はむしろこうします。まず表の左上のセル(4月1日キリン)を選択、次にスクロールして表の一番下を表示させたところで、表の右下(9月30日ゾウ)をCtrlキーを押しながら選択(これで表全体が選択されます)。で、Ctrl+D。 コピーに関しては、このように縦に長い表は、あらかじめ画面を上下に分割しておくと手早くコピーできます。
- yumi0215
- ベストアンサー率30% (1335/4411)
一番簡単だと思うやり方です。 1)集計結果出したいシートを選択し、画像でいえばB3にホームタブのリボン一番右にある編集グループのΣアイコンをクリックし=sum()を表示します。 2)次に4月1日のシートを選択し、A2をクリック。 3)Shiftを押しながら9月30日のシートタブをクリック。 4)エンターを押せば4/1~9/30のセルB3にあるデータの合計が算出されます。 5)集計シートのB3のセルを選択した状態で、右下角っこにある黒い四角■(オートフィル)をWクリック 6)B列が選択されている状態で右下角っこにある黒い四角■を右へドラッグすれば式のコピーも完了です。
補足
回答ありがとうございます。 上記の通りやってみましたが期間内の合計値が計算されてしまいました。 私の目的としましては複数シートの特定の複数セルを一枚のシートに順に書き出したいです。 画像が見づらくて申し訳ありませんが4月1日~のシートに記載されているキリン、ライオン、パンダ、ゾウの値を集計シートの日付順に並べたいです。
お礼
>A列を「4月1日」と入力します。勝手に日付データに変わるのであれば、「'4月1日」としてみてください。 アドバイス通り「'」を入れたら=INDIRECT(A3 & "!" & "A2")での内容が反映されました! おかげさまで仕事の効率化ができました。ありがとうございます!