プロが教える店舗&オフィスのセキュリティ対策術

エクセルブック内にある40シートあるうちの 
12シートから37シートのU1:Y1300のデータを
同ブックのまとめシートに列方向で値のみ(間に空列を1つ挟んで)
順番に貼り付けて行きたいです。
いろいろ調べているのですが、行方向のマージの方法しか見つけることができずに困っています。

このまとめを18ファイル分作成しなくてはならず、時間に余裕がなくなってきてしまいました。
どなたか助けていただけないでしょうか、よろしくお願いいたします。

質問者からの補足コメント

  • つらい・・・

    具体的には
    シート12のU列からY列にあるデータを
    まとめシートのA列からE列へ値のみ貼り付け、
    シート13のU列からY列にあるデータを
    まとめシートのG列からK列へ値のみ貼り付け
    シート14のU列からY列にあるデータを
    まとめシートのM列からQ列へ値のみ貼り付け。。。。というふうにシート37まで繰りかえしていきたいです。
    説明がへたくそで申し訳ありません、よろしくお願いいたします。

      補足日時:2018/03/27 10:58

A 回答 (8件)

>Sheet12というシート名に変更したら解決しますでしょうか?


はい。全て半角の"Sheet12"のシート名にしてください。
    • good
    • 0

>Sheets(sname).Select の部分で止まってしまいました。


>引き続きどうぞよろしくお願いいたします。

該当シートがない為、止まっていると考えられます。

エラー発生時、snameにマウスカーソルをあてるとsnameの内容が表示されます。
もし、それが、例えば、Sheet20と表示されたなら、Sheet20がないことになります。
「EXCEL VBAで複数シートから該当列」の回答画像7
    • good
    • 0
この回答へのお礼

お返事ありがとうございます、カーソルを宛ててみましたら、Sheet12と表示されました。
ですが、Sheet12は存在しています。Sheet12というシート名に変更したら解決しますでしょうか?

お礼日時:2018/03/27 14:04

No2です



>数式のせいでまとめシートに集約されたデータが全てエラーになってしまいました。
失礼しました。そこまでは気が回りませんでした。

いわゆる「値をペースト」にするには
 Worksheets(n).Range("U:Y").Copy Destination:=destR
の1行の部分を
 Worksheets(n).Range("U:Y").Copy
 destR.PasteSpecial Paste:=xlPasteValues
の2行に代えることで、実現できると思います。


…と書きながら、いまさらですが思いつきました。
まとめシートには、対象シートのセルを参照する式を設定しておくという方法もありましたね。
この方法だと、一度だけVBAを実行しておけば、その後で元のシートの値が変わっても、自動的にリンクしてその値が表示されるようになります。
    • good
    • 0
この回答へのお礼

ありがとうございました、無事理想の仕上がりになりました。
感謝しております、本当にありがとうございました。

お礼日時:2018/03/27 14:12

>値だけ貼り付ける良い方法はありますでしょうか。


値だけの貼り付けなら、以下のようにしてください。

Option Explicit

Public Sub シートまとめ()
Dim i As Long
Dim sname As String
Dim col As Long
col = 1
For i = 12 To 37
sname = "Sheet" & i
Sheets(sname).Select
Range("U1:Y1300").Select
Selection.Copy
Sheets("まとめシート").Select
Cells(1, col).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
col = col + 6
Next
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました
Sheets(sname).Selectのところで止まってしまいましたが、他の方に示していただいた方法を試したら無事解決いたしました。ありがとうございました。

お礼日時:2018/03/27 14:13

以下のマクロを標準モジュールに登録してください。


Option Explicit

Public Sub シートまとめ()
Dim i As Long
Dim sname As String
Dim col As Long
col = 1
For i = 12 To 37
sname = "Sheet" & i
Sheets(sname).Select
Range("U1:Y1300").Select
Selection.Copy
Sheets("まとめシート").Select
Cells(1, col).Select
ActiveSheet.Paste
col = col + 6
Next
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
モジュールに登録して作動させたところ
Sheets(sname).Select の部分で止まってしまいました。
引き続きどうぞよろしくお願いいたします。

お礼日時:2018/03/27 13:18

シート12の正確なシート名は何でしょうか。


"シート12"であってますか。(数字の12は半角)

まとめシートの正確なシート名は何でしょうか。
"まとめシート"であってますか。(全て全角文字)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、シート12の正確な名前はSheet12(全て半角)です、また、まとめシートは全て全角文字であっています。
どうぞよろしくお願いします。

お礼日時:2018/03/27 12:54

こんにちは



どこかに「12シートから37シート」のシート名のリストがあれば、関数で可能だと思います。
とはいえINDIRECT関数のオンパレードになってはしまいますが…

VBAでもよいのであれば、以下でいかがでしょうか?
ただし、「12シートから37シート」というのはWorkSheet(12)~(37)で良いものと解釈しました。(シート名がSeet12~37という意味とは異なります。)

Sub Sample()
Dim destR As Range, n As Integer

Const msheet = "まとめ" '←まとめシートの名前
Worksheets(msheet).Cells.ClearContents
Set destR = Worksheets(msheet).Cells(1, 1)

For n = 12 To 37
Worksheets(n).Range("U:Y").Copy Destination:=destR
Set destR = destR.Offset(0, 6)
Next n

End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、まさに私が必要としているものを作っていただいて感謝しています。U:Yに入っていた数式のせいでまとめシートに集約されたデータが全てエラーになってしまいました。
Worksheets(n).Range("U:Y").Copy Destination:=destRの部分を
Worksheets(n).Range("U:Y") = destR
と、
Worksheets(n).Range("U:Y").Value = destR.Value
と値だけ貼り付けるつもりで変更してみたのですが、できませんでした。
値だけ貼り付ける良い方法はありますでしょうか。

お礼日時:2018/03/27 12:52

> 行方向のマージの方法しか見つけることができずに困っています。



行方向にマージしてから、コピー、形式を指定して貼り付けで、行と列を入れ替えるじゃダメですか?

121ware.com - Excel 2010でシートに入力されているデータの行と列を入れ替える方法
https://121ware.com/qasearch/1007/app/servlet/re …
Office - 行から列、または列から行にデータを入れ替える (配置の転換)
https://support.office.com/ja-jp/article/%E8%A1% …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、行列を入れ替えたいのではなく、
シート12のU列からY列にあるデータを
まとめシートのA列からE列へ、
シート13のU列からY列にあるデータを
まとめシートのG列からK列へ
シート14のU列からY列にあるデータを
まとめシートのM列からQ列へ。。。。というふうにシート37まで繰りかえしていきたいです。
説明不足で申し訳ありません。

お礼日時:2018/03/27 10:56

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A