• ベストアンサー

【エクセル】シートが分かれているデータを集める

あるブックにシートが10シートあるとします。 これらのシートの同じ列を、別のシートにまとめたいです。 列には60行くらいのデータがあり、それぞれのシートの行数は同じです。 まとめるシートは、    A列        B列      C列        D列   シート1のA列、シート2のA列、シート3のA列、シート3のA列・・・ のようにしたいです。 関数などを試してみましたが、列設定ではなかなかうまくいかず、 すっきりと持ってくることができません。 知恵をお貸しいただけないでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

マクロで対応するなら、集計用のシートを1枚目のシートにして、以下のようなコードで2枚目以降のシートのA列のデータを1枚目のシートにコピー貼り付けします。 Sub sample() Dim i As Integer For i = 2 To Worksheets.Count Worksheets(i).Select Columns("A:A").Copy Sheets(1).Select Cells(1, i - 1).Select ActiveSheet.Paste Next i End Sub

harukanasanon
質問者

お礼

ありがとうございます! 探していたのはまさにこれ!といった感じでした。 少し自分用に手直しは必要ですが、 しっかり別シートからデータを持ってくることが できました。 これであれば、シート名に関わらず使えますので、 応用が利きそうです(^^) 本当にありがとうございました。 (操作を誤って、一度お礼の言葉を消してしまったようなので、 再度投稿しています。重複がありましたら申し訳ありません)

その他の回答 (5)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 ANo.2,4です。  ANo.4の関数を次の様に変えれば、関数を少し短くする事が出来ます。 =IF(ISERROR(1/LEN(INDIRECT(Sheet補助!A$1&"!A"&ROWS($1:1)))),"",INDIRECT(Sheet補助!A$1&"!A"&ROWS($1:1)))

harukanasanon
質問者

お礼

ありがとうございます(^^) 何度もご回答いただいて、感謝です。 またどうぞよろしくお願いいたします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 ANo.2です。  もし、表示させたい列が存在しているシートのシート名が、 Sheetあ Sheetい Sheetう Sheetえ Sheetお   ・   ・   ・ という具合に、連番にはなっていない場合には、  まず、適当な空きシート(ここでは仮に「Sheet補助」というシート名のシートとします)の1行目等に、 A1セルに   Sheetあ B1セルに   Sheetい C1セルに   Sheetう D1セルに   Sheetえ E1セルに   Sheetお   ・   ・   ・ という具合に、表示させたいデータがある全てのシートのシート名を、横に並べて入力して下さい。  次に、Sheet1のA1セルのデータを表示させるセルに、次の関数を入力して下さい。 =IF(ISERROR(INDIRECT(Sheet補助!A$1&"!A"&ROWS($1:1))),"",IF(INDIRECT(Sheet補助!A$1&"!A"&ROWS($1:1))="","",INDIRECT(Sheet補助!A$1&"!A"&ROWS($1:1))))  そして、そのセルをコピーして、他のシートのデータを表示させる全てのセルに貼り付けて下さい。

harukanasanon
質問者

お礼

ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 まとめるシートのA1に=OFFSET(INDIRECT("sheet"&COLUMN(A1)&"!A1"),ROW(A1)-1,)を設定、縦横に必要分コピーして下さい。 尚、データのみとしてい場合、まとめシートの数式範囲をコピー→形式を選択して貼り付け→値を選択→OKとして下さい。

harukanasanon
質問者

お礼

ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 もし、表示させたい列が存在しているシートのシート名が、 Sheet1 Sheet2 Sheet3 Sheet4 Sheet5   ・   ・   ・ という具合に、「文字列+連番」という形式になっている場合には、 まず、Sheet1のA1セルのデータを表示させるセルに、次の関数を入力して下さい。 =IF(ISERROR(INDIRECT("Sheet"&COLUMN(A1)&"!A"&ROW(A1))),"",IF(INDIRECT("Sheet"&COLUMN(A1)&"!A"&ROW(A1))="","",INDIRECT("Sheet"&COLUMN(A1)&"!A"&ROW(A1))))  次に、そのセルをコピーして、他のシートのデータを表示させる全てのセルに貼り付けて下さい。

harukanasanon
質問者

お礼

ありがとうございました。

harukanasanon
質問者

補足

ありがとうございます。 補足いたしますと、 「文字列+連番」という形式にはなっておらず、 「13」~「100」くらいまでがランダムに並ぶシート名です。

回答No.1
harukanasanon
質問者

お礼

ありがとうございます。 こちらのサイトにはよくお世話になっております。 今回は、なかなかちょうど良いマクロが見当たらずに 困っておりました。 ヒントと言いますか、とっかかりだけご教示いただけますと とてもうれしいです。

関連するQ&A