Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5660 / 13645 ツリー ←次へ | 前へ→

【49328】同じ構造のシートを結合するには 学問1 07/5/31(木) 12:58 質問[未読]
【49341】Re:同じ構造のシートを結合するには Jaka 07/5/31(木) 15:02 発言[未読]
【49355】Re:同じ構造のシートを結合するには 学問1 07/6/1(金) 15:35 質問[未読]
【49356】Re:同じ構造のシートを結合するには ウッシ 07/6/1(金) 15:53 発言[未読]
【49358】Re:同じ構造のシートを結合するには 学問1 07/6/1(金) 22:03 質問[未読]
【49359】Re:同じ構造のシートを結合するには ウッシ 07/6/1(金) 22:28 発言[未読]
【49608】Re:同じ構造のシートを結合するには 学問1 07/6/13(水) 8:53 お礼[未読]

【49328】同じ構造のシートを結合するには
質問  学問1  - 07/5/31(木) 12:58 -

引用なし
パスワード
   複数のシートを結合するため、手動でコピー、貼り付けの手順で
可能ですが、もっと効率いい方法はあるのでしょうか?
マクロ自動記録の手法でやって見ました。以下の難関に直面しています。、
・各シートのレコード数が可変のため、制御するのに非常に困難です。
・結合シートに貼り付けのときも、難しいです。
・シートの数も可変のため、もっとく難しくなります。
ご伝授ください。

Sub Macro1()
  Sheets("Sheet1").Select
  Range("A1:C2").Select
  Selection.Copy
  Sheets("結合").Select
  Range("A1").Select
  ActiveSheet.Paste
  Sheets("Sheet2").Select
  Range("A2:C2").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("結合").Select
  Range("A3").Select
  ActiveSheet.Paste
  Range("C3").Select
End Sub


Sheet1
名前  性別  年齢
田中  男   15


Sheet2
名前  性別  年齢
斉藤  男   16



結合
名前  性別  年齢
田中  男   15


斉藤  男   16



【49341】Re:同じ構造のシートを結合するには
発言  Jaka  - 07/5/31(木) 15:02 -

引用なし
パスワード
   A列1番下のA65536のセルを選択して、
Ctrl + ↑(矢印キー)
を押すと、A65536の次のセル(A65535)セルから上に向かって、
空白で無いセルを選択することができます。
該当するセルがないと、ドン突きを選択すます。
A1に値が行っている時も同じところを選択するので注意。
これをマクロ記録すると、A列で値か数式の入った最終行が解ります。
マクロ記録で記録された、Selection は、あいまいなので、明確にRange("A65536")と指定してやれば、いつも同じところから空白でない探してくれます。

で、セルを変数を使って指定するには、

Cells(変数1,変数) で指定できます。
変数1に「5」、変数2に「10」をいれてやれば、
E10のセルということになります。

※Cells(縦位置の数字,横位置の数字)

セル範囲の場合は、
Range(Cells(2,1),Cells(5,10))
とすれば、
B1:E10 までのセルという事になります。

A列最終行の次のセルから、下に3行、4(D)列をまだるっこく書くと

Range(Cells(最終行 + 1, 1), Cells(最終行 + 1 + 3 - 1, 4))

と、こんな感じに算数式で導くことができます。

もっと細かく正確にシートを指定してと書くと、こんな感じ。
Sheets("AAAA").Range(Sheets("AAAA").Cells(最終行 + 1, 1), Sheets("AAAA").Cells(最終行 + 1 + 3 - 1, 4))

こういうのを理解すれば、どのシートのどのセルを、どこのシートのどこのセルに○○させる事ができるようになります。

【49355】Re:同じ構造のシートを結合するには
質問  学問1  - 07/6/1(金) 15:35 -

引用なし
パスワード
   ありがとうございます。
回答文を読んでも、進まないようですが、困っています。

【49356】Re:同じ構造のシートを結合するには
発言  ウッシ  - 07/6/1(金) 15:53 -

引用なし
パスワード
   こんにちは

各シートの1行目は項目行として、

Sub test()
  Dim s As Worksheet
  For Each s In ThisWorkbook.Worksheets
    If s.Name <> "結合" Then
      s.Range("A1").CurrentRegion.Offset(1).Copy _
        ThisWorkbook.Worksheets("結合") _
          .Range("A65536").End(xlUp).Offset(1)
    End If
  Next
End Sub

【49358】Re:同じ構造のシートを結合するには
質問  学問1  - 07/6/1(金) 22:03 -

引用なし
パスワード
   テストしましたので、その結果を報告します。
複数のシートの結合は正確に行いました。ただし、結合の第一行目には項目行は
コピーされていない。

複数のシートに対して、重複・漏れしないために、どのように制御しているのでしょうか?

【49359】Re:同じ構造のシートを結合するには
発言  ウッシ  - 07/6/1(金) 22:28 -

引用なし
パスワード
   >結合の第一行目には項目行はコピーされていない。

>>各シートの1行目は項目行として
と、書いておきましたけど?

それくらいは事前に準備しておけばいいでしょう?

どうしてもコードで処理したいのなら出来ますけど。

【49608】Re:同じ構造のシートを結合するには
お礼  学問1  - 07/6/13(水) 8:53 -

引用なし
パスワード
   ウッシ さん:
タイトル行の表示は一度コピーすれば、問題解決となるから、
毎回、コピーします。
大変ありがとうございました。

5660 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free