プロが教えるわが家の防犯対策術!

各シートに60人前後のデータがあります

番号  データ1  データ3
名前  データ2  データ4
番号  データ1  データ2
名前  データ3  データ4




といった形で(実際はデータ50ぐらいまであります)
表になっているシートが20枚ほどあります。(約1300人のデータ)

これをひとつのシートに

番号  名前  データ1 データ4
番号  名前  データ1 データ4




というような形で表にするにはどのような方法が良いでしょうか?
ご回答の程、よろしくお願いいたします。

A 回答 (5件)

以下のマクロを登録し、実行してください。

(標準モジュールへ登録)
---------------------------------------------------------
Option Explicit

'sheet2以降のデータを先頭のシートにまとめる
Dim sh1 As Worksheet 'sheet1
Dim row1 As Long 'sheet1の行
Public Sub Macro1()
Dim i
Set sh1 = Worksheets("sheet1")
row1 = 1
'全シート分繰り返す
For i = 2 To Worksheets.Count
GetData (i)
Next
MsgBox ("処理完了")
End Sub

'1シート分の集計
Public Sub GetData(ByVal sheetno As Long)
Dim sh As Worksheet
Dim i As Long
Set sh = Worksheets(sheetno)
i = 1
'人数分繰り返し
Do While True
If sh.Cells(i, 1) = "" Then Exit Do '番号が空白なら終了
sh1.Cells(row1, 1) = sh.Cells(i, 1) '番号
sh1.Cells(row1, 2) = sh.Cells(i + 1, 1) '名前
sh1.Cells(row1, 3) = sh.Cells(i + 1, 5) 'データ13
sh1.Cells(row1, 4) = sh.Cells(i + 1, 6) 'データ13
row1 = row1 + 1
i = i + 8
Loop
End Sub
----------------------------------------------
実行時には以下の条件が成立している必要があります。
まとめ用のシート名は"sheet1"であること
sheet1は必ず、一番左側のシートであること。

マクロを実行すると、sheet1の右側のシートを順番に処理し、sheet1へ書き込んでいきます。
    • good
    • 0
この回答へのお礼

ご回答、まことにありがとうございます。

早速ご提案いただいたマクロを実行してみましたところ
思ったとおりの動作がなされました。
1秒足らずで処理も終わりました!

今からマクロの内容を確認し、自分でも組めるよう理解しようと思います。

今回は数日にわたりありがとうございました。

また何かありましたら、よろしくお願いいたします。

こちらのご回答、ベストアンサーにさせていただきます。

お礼日時:2016/10/21 16:56

No2です。


>各シート見出し行は現状ありますが削除予定です。
20シートありますので、もし大変なら、見出し行は、削除せず、そのままでも構いません。
但し、その場合は、提示された行の情報が違ってくるので、見出しがある場合の、各データ行の情報を
再度、提示していただくことになります。(見出し行が1行かもしれないし、5行かもしれませんので・・)
くどくど、質問をしているのは、正確な情報がないと、正しいマクロが作成できない為です。ご理解ください。
    • good
    • 0
この回答へのお礼

返答が遅くなり申し訳ありません。

いえいえ、とんでもございません。
こちらもきちんと情報が提示できず申し訳ありません。

追加質問1についてですがそちらはご提示いただいた内容に間違いありません。
最後の人まで同じような形になっております。

追加質問2についてですが、そちらも同じくご提示いただいた
2行目、10行目、18行目・・・と続く行のE列F列になります。

また見出しに関してですが、すでに作業グループで一括削除いたしましたので
問題ないかと思われます。

お手数おかけして申し訳ありません、よろしくお願いいたします。

お礼日時:2016/10/21 15:37

No2です。


追加質問1:
   A列  B列  C列 ・ ・ ・  J列
1行 番号 データ1 データ2 ・ ・ データ9
2行 名前 データ10 ・
3行 空白 ・
4行 空白 ・
5行 空白 ・
6行 空白 ・
7行 空白 ・
8行 空白 データ64 ・ ・ ・ ・ データ72

の次のデータは

9行 番号 データ1 データ2 ・ ・ データ9
10行 名前 データ10 ・
11行 空白 ・
12行 空白 ・
13行 空白 ・
14行 空白 ・
15行 空白 ・
16行 空白 データ64 ・ ・ ・ ・ データ72

となっていますか?

追加質問2:
念のための確認ですが、
データ13は、名前のある行(2行,10行)のE列
データ14は、名前のある行(2行,10行)のF列
で間違いないですか。
    • good
    • 0

No1です。


質問2の(約1300×2=2600行のデータとなる)は

(約1300×1=1300行のデータとなる)・・・の誤りです。失礼しました。

あと、念の為、確認しますが、各シート及びまとめ用シートは、見出し行はないですね。
    • good
    • 0
この回答へのお礼

返答が遅れてしまい申し訳ありません。

いろいろと省略してしまい申し訳ありません。
具体的にしますと

質問1 実際の表は以下のようになっています

   A列  B列  C列 ・ ・ ・  J列
1行 番号 データ1 データ2 ・ ・ データ9
2行 名前 データ10 ・
3行 空白 ・
4行 空白 ・
5行 空白 ・
6行 空白 ・
7行 空白 ・
8行 空白 データ64 ・ ・ ・ ・ データ72

A列の名前と空白は結合セルとなっています。
データはB~J列、1~8行の72マスに入っています。
これを

番号 名前 データ13 データ14

といった1300行の表にまとめたいとかんがえてます。

質問2
はい、作成も配置も可能です。
まとめようのシートもご提案頂いた形が理想です。

各シート見出し行は現状ありますが削除予定です。
まとめシートは一切空白の状態です。

お時間ありましたら、ご回答の程、よろしくお願いいたします。

お礼日時:2016/10/21 09:26

補足要求です。


質問1
各シートに60人前後のデータがありますが、その行、列はどうなっていますか?
   A列  B列    C列
1行 番号  データ1  データ3
2行 名前  データ2  データ4
3行 番号  データ1  データ2
4行 名前  データ3  データ4
と理解して良いですか。また、A列の行で歯抜けはないですか。(A列の空白のセルの1つ前の行が最後の名前ですか?)

質問2
これをひとつのシートにまとめますが、そのシートは既に存在しますか。
存在するなら、一番左端にそのシートを置くことはできますか。
(つまり、一番左端が、まとめのシートで、その右側の全てのシートが60人前後の各シートのようになる)
また、まとめようのシートは
   A列  B列   C列   D列    
1行 番号  名前  データ1 データ4
2行 番号  名前  データ1 データ4
と理解して良いですか。(約1300×2=2600行のデータとなる)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!