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

excelで
2行目のB列とC列を
抜き出して別のシートにはりつけたいです。
これと同じ作業を30回繰り返したいです。

1シートずつコピーして貼りつける方法が大変なので、
別の方法があれば教えてください。

A 回答 (4件)

No.3です。



>4個目のシートまでしか表示されなかったのですが、
>154個目まですべて同じように表示することは可能でしょうか。

前回のコードは2番目から最終のSheetすべてに対して同じ操作を行うコードなので
「4個までしか表示されないはずはない!」と思いながら、お礼欄を読んでいくと

>154個のシートの中には、A列からS列の22行目が空欄になっているシートもあるのですが、・・・
あぁ~~!やっぱり!と思いました。
前回のコードはB列最終行の1行下に順次表示するようにしているので、
SheetによってB列にデータがない場合(空白の場合)は繰り上がってデータが書き換えられてしまいます。
(空白セルの値をそのまま表示するので、B列最終行の1行下は空白セルになってしまう)

結局、データがあるなしにかかわらず各シートのA~S列22行目を一番左のSheetに表示すれば良いのですね。
1番目Sheetの2行目以降に表示されます。

↓のコードに変更してみてください。

Sub Sample2()
 Dim k As Long, cnt As Long
  cnt = 1
   For k = 2 To Worksheets.Count
    cnt = cnt + 1
     Worksheets(1).Cells(cnt, "A").Resize(, 19).Value = _
      Worksheets(k).Range("A22").Resize(, 19).Value
   Next k
End Sub

※ 前回同様、コピー&ペーストではなく、値だけの代入にしていますので、
書式は考慮されません。
(セル全体をコピー&ペーストするより、時間短縮になります。)m(_ _)m
    • good
    • 0
この回答へのお礼

助かりました

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

教えていただいたコードを実行してみたら、表示したいようにできました!!!!!!
今回、値の代入で用が足りるので、作業時間がとても短縮でき、うれしいです!

1シートずつコピー&ペーストするのは気が遠くなる作業でしたので、
教えていただいて、本当に感謝です。
また、こんなに早く回答していただいて、とても助かりました。

本当にありがとうございます。

お礼日時:2018/12/23 15:47

こんばんは!



VBAになりますが、一例です。
>別のシートにはりつけたいです。
>これと同じ作業を30回繰り返したいです。

結局各シートのB2・C2の値を別シートに表示すれば良いのですね。

シート見出しの一番左のシートのB・C列に、二番目以降すべてのシートのB2・C2の値を
順に表示する方法にしてみました。
標準モジュールにしてください。

Sub Sample1()
 Dim k As Long
  For k = 2 To Worksheets.Count
   Worksheets(1).Cells(Rows.Count, "B").End(xlUp).Offset(1).Resize(, 2).Value = _
    Worksheets(k).Range("B2").Resize(, 2).Value
  Next k
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。実行してみたらできました!!
シート見出しの一番左のシートの後ろに154個のシートがあるのですが、
教えていただいたものを実行したら、14個目のシートまでしか表示されなかったのですが、
154個目まですべて同じように表示することは可能でしょうか。

また、154個目のシートまでのA列からS列の22行目を表示させたいのですが、
どうすればいいのでしょうか。
154個のシートの中には、A列からS列の22行目が空欄になっているシートもあるのですが、
それもそのまま表示させることはできますか。


お手数をおかけしますが、教えていただきたいです。よろしくお願いします。

お礼日時:2018/12/23 14:43

シート名を抜き出せるとか、シートの名前に規則性がある(○○1、○○2とか)ならINDIRECT関数を使えばできるかと思います。



いつも繰り返し30シート分を抜き出すとかでなく1回こっきりなら、30シート分くらいなら手作業でも問題ないかと思いますが。

データが文字列であるとか集計が目的ではないとかなら統合は不向きかと。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。INDIRECT関数を使ってみたのですが、毎回エラーになってしまいます。
シートの名前が「第2表(1月) (2)」、「第2表(2月) (2)」、「第2表(3月) (2)」と続いていて規則性があると思います。
それぞれのシートのA列からS列の22行目を抜き出したいとき、
=INDIRECT('第2表(1月) (2)'!A22:S22)
=INDIRECT('第2表(2月) (2)'!A22:S22)
     :

という式を使ってやってみたのですが、♯REF!となってしまいます....

お礼日時:2018/12/23 14:08
    • good
    • 0
この回答へのお礼

回答ありがとうございます。統合でそれぞれのシートの同じ場所の合計や平均などの計算はできたのですが、それぞれのシートの同じセルの番地を一つのシートに書き出すことができません...自分のやり方が違うのだと思うのですが、それぞれのシートの同じ場所のセルを一つの場所にまとめることは統合でもできますか。

お礼日時:2018/12/23 14:02

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

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