ここから本文です

解決済みの質問

知恵コレに追加する

Excelについて質問します。 例えばここに3つのSheetがあります。それぞれシートA、B...

pleasegiveme_youradviceさん

Excelについて質問します。

例えばここに3つのSheetがあります。それぞれシートA、B、Cとします。
シートA、B、Cには全く同じレイアウトで縦方向にデータが入っています。

各シートのデータ件数はまちまちです。

ここで、先頭に新しくシートXを作り、シートA、B、CにあるデータをシートXにまとめたいとします。
これを一括で行いたいのですが、どうすればいいでしょう?
-----------------
つまり、
シートA・・・a,b,cというデータが各行に存在する
シートB・・・d,e,f,g,hというデータが各行に存在する
シートC・・・i,jというデータが各行に存在する

これらを一発で統合しシートXにa,b,c,d,e,f,g,h.i.jというデータを作成したい
しかも、cとd、hとiの間には余計な空白セルは入らないものとする。連続データとしたい。
-----------------
実際は、シートが50ぐらいあって、各シートのデータ数も5000から10000ぐらいあるので、手作業は無理なんです。

わたしはVBA全くわかりません。でもVBAでないとできないならVBA使えるようになります。
意味は自分で調べますのでVBAが必要ならVBAでどういった機能やロジックを使えば良いのか、概略でもさわりだけでも良いのでお教え下さい!

補足
hiyokosanさんに補足
1:タイトル行は3行目ですが、1、2行目を削除しても全く問題ありません。(それぐらいはすぐにでもできますし)
2:できます。やったら「おっ」と思いまし
3:A列です
4:すみません、件数をオーバーに書きましたが、全データを統合してもシートからはみ出ることはないと思います。
5:そうです!宜しくお願いします。なお実際の各シートは表形式になっています。もし空白行ができてもオートフィルタで対応しま

違反報告

ベストアンサーに選ばれた回答

hiyokosan_desuさん

質問です。
1.各シートのデータのタイトル行の位置を教えてください。(列の始めの位置も)

2.各シートのデータのひとつを選択して、F5、セル選択、アクティブセル領域
で、タイトル行を含むデータ範囲のみを選択できますか?

3.上記2.のように出来ない場合、最終行(65536)から上に向かった場合
(Ctrl+↑) で最終行が取得できるのは、どの列でしょうか

4.各シート5000-10000行とすると、EXCEL2003までは最終行が65536なので
1枚のシートにはいらないのですが…。

5.各シートを縦に結合でいいんですよね。
================================
下記のもので試してください。タイトル行が3行目(1,2行目は空白)

EXCELの画面で、シート名のところ(通常Sheet1となっているところ)を右クリック、コードの表示を選択します。
VBEの画面が開きますので、メニューより「挿入」→「標準モジュール」を選択します
下記のコードを貼り付けます。
-------------------------------------------------
Sub シート結合()
Dim TmpSheet As Worksheet
Dim Ws As Worksheet
Dim SrcRange As Range
Dim TargetRange As Range
Dim i As Long

For Each Ws In Worksheets
i = i + Ws.Range("A3").CurrentRegion.Rows.Count
Next
If i >= 65535 Then
MsgBox "データが多すぎます。" & i & " 行"
Exit Sub
End If
Application.Calculation = xlCalculationManual
Set TmpSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Set TargetRange = Range("B1")

For Each Ws In Worksheets
If Ws.Name <> TmpSheet.Name Then
Set SrcRange = Ws.Range("A3").CurrentRegion
If SrcRange.Rows.Count > 1 Then

If TargetRange.Address(0, 0) <> "B1" Then
Set SrcRange = SrcRange.Offset(1).Resize(SrcRange.Rows.Count - 1)
End If
SrcRange.Copy Destination:=TargetRange

TargetRange.Offset(, -1).Resize(SrcRange.Rows.Count).Value = Ws.Name
Set TargetRange = TmpSheet.Range("B65536").End(xlUp).Offset(1)
End If
End If
Next
Application.Calculation = xlCalculationAutomatic
End Sub
-------------------------------------------------
EXCELにもどります。

メニューよりツール、マクロ、マクロ、と進

シート結合

を選択し、実行します
A列に元のシート名がはいりますので、あとでA列を削除して下さい。
=============
追記:エラーチェックいれてみました。

  • 違反報告
  • 編集日時:2007/11/8 16:02:12
  • 回答日時:2007/11/8 14:41:44

質問した人からのコメント

  • 降参ありがとうございました!本当に助かりました。
    最低3日かかる作業が3時間で全て終わりました。知恵コイン500枚ではあまりにも足りなさ過ぎて恐縮頻りです。大感謝。
  • コメント日時:2007/11/9 18:27:30

グレード

この質問・回答は役に立ちましたか?
はい
いいえ

お役立ち度:お役立ち度 5点(5点満点中)8人中 7人が役に立つと評価しています。

ベストアンサー以外の回答

4件中14件)
並べ替え:回答日時の
新しい順
古い順

 

kirikirimaikoさん

データーの結合してから何らかの作業が生じて来ますよね。でしたら思い切ってアクセスにエクスポートした方が良いと思います。エクセルですと新たにピボットテーブルを使ってのデーダーベースの作業が想定できますので、VBAを理解するのも大変だと思います。かく言う私がそうでしたので。。。。

my_offiseさん

データ形状も 変動も想定できるし
VBAを(手直しや 理解の為)にも 結構大変だし・・・

各シートを アクセスにエクスポートして 各テーブルにしたらどうでしょう?

ここで 好みのクエリか レポート
このほうが簡単と思うけど?

どうしても VBAの場合(マクロ不可)は・・・ データ数が 使用の行数6万超でも
配列に入れ込んで これに対してそれなりの操作をしますが・・・・ こうなってくると 一般の関数では処理できませんので
全ての操作は プロシージャから(VBAの構文)になっちゃうけ
要は メモリ上の処理になっちゃうんだけど・・・・ アクセスに移して アクセスの基本操作で容易に達成しますよ?

  • 違反報告
  • 編集日時:2007/11/8 15:24:53
  • 回答日時:2007/11/8 15:12:39

allsun3sanさん

前回答者も書かれていますが、Excel2003まででは
65536行まで
この行まではマクロでできるとは思うのですが、私もマクロはよく判りません。
これなのに
>VBAが必要ならVBAでどういった機能やロジックを使えば良いのか、概略でもさわりだけでも
これを教えて頂いて、利用できるはずがない、と私は思います。
マクロでは
先頭指定シートより指定した列の連続データをコピー→指定したシートに貼り付け→その下のセルに2番目のシートのデータをコピー&ペースト→シート名がなくなるまで(一番右のシート名)まで繰り返す
これをマクロに組めればいいのですが・・
この事を理解し、マクロを組むまでの時間よ
50シート位は手作業は無理でないと思いますが、・・・・1時間も掛かりません。1回のコピー&ーストも1分も掛かりません。

それよりこの作業をされてなにをされたいの??
この事を質問されたら、別の意味でされたいことが解決するのでは・・・
またExcelではこのような何十万件のデータの処理は無理があるのでは・・・??
アクセスで・・・(私は使えませんが・・・・)

ichi_ichi22さん

やり方は知りません、すいません。
とりあえずエクセル2003では6万5千行位しか入らないと思います。
エクセル2007では100万行入るみたいですけど。
大丈夫ですか?

あなたにおすすめの解決済みの質問

Excel VBAで特定セルデータを参照し取り込む 「ファイル」⇒「ページ設定」⇒「ページ」先頭ページ番号にシート内に記述してある数値を読み込む方法を教えて下さい。
エクセルで「日付‐名前‐内容」といった行の連続するデータがあり、担当者ごとに同じワークシートを複数作りました。数ヶ月分のデータの中で1か月ごとの担当者別のグラフを作成したいのです。 各個人の総件数はCOUNTA関数を使って...
Excelのシートを印刷したいのですが Excelの印刷について質問です。 2ページ分を50%に縮小して1枚の紙に印刷するという「割り付け印刷」がありますが、 別々のシートにあるデータを1枚の紙に印刷することは不可能でしょうか。 Sh...
PR
回答ありがとうキャンペーン ベストアンサーに選ばれるともれなくポイントプレゼント!! キャンペーンの詳細を見る ※回答することで自動的に参加となります。

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:Office系(Word、Excel)]

ただいまの回答者

12時26分現在

2408
人が回答!!

1時間以内に4,567件の回答が寄せられています。