dポイントプレゼントキャンペーン実施中!

sheet2のA1にはsheet1のA1データ、sheet2のA2にはsheet1のA31データ、sheet2のA3にはsheet1のA61のデータという風に30行おきのデータをコピーしたいのです。
これが1000行ありますので困っています。

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

  • VBAを使った事がありません。
    具体的な使い方を教えていただければありがたいですが。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/11/27 11:02
  • sheet1のデータは18000です
    VBAは難しそうですね。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/11/27 11:24
  • VBAでなく、関数での解決法をありがとうございます。
    質問内容を簡単にするため、sheet1とsheet2と同じファイルで説明しましたが、実は別ファイルなのです。
    説明のあった関数を入力しましたが解決できませんでした。

    No.6の回答に寄せられた補足コメントです。 補足日時:2020/12/02 15:43

A 回答 (7件)

No.6です。


大変失礼しました。前回の回答に誤りがありました。
前回回答はあくまでも最初の行のセルに記述する数式であり、オートフィルで下方向へコピーできる数式ではありませんでした。

さらに、shee1とsheet2は異なるブック(異なるファイル)にあるとのことですので、sheet2のA1に記述する数式は以下のものになります。

=INDIRECT("[ブック名.xlsx]Sheet1!$A$"&ROW()*30-29)
または
=INDIRECT("[ブック名.xlsx]Sheet1!$A$"&(ROW()-1)*30+1)

上記数式の「ブック名」とはsheet1のあるファイル名のことです。

ただし、INDIRECT関数の制約として、sheet1とshhe2のある両方のブック(ファイル)が開いていることが必要となります。
    • good
    • 0

VBAは使ったことがないとのことなので、関数での回答とします。


ご質問者のご希望を叶えるため、sheet2の最初のデータのセルに記入すべき数式は

=INDIRECT("Sheet1!A"&ROW()+sheet1見出し行数-sheet2見出し行数+30*(ROW()-sheet2見出し行数-1))

となります。

従って、sheet1もsheet2も見出し行がなく、どちらもA1からデータを入れるルールだとすると、sheet2のA1に、

=INDIRECT("Sheet1!A"&ROW()+30*(ROW()-1))

という数式を記述し、下方向にオートフィル等でコピーすればよいということになります。
この回答への補足あり
    • good
    • 0

VBAなら ループで回して配列に格納し


再びループで回してセルに吐き出し
    • good
    • 0

使ったことがないならば あきらめたほうが良いと思います


少なくとも 基本的なことを理解した上で使うべきです
VBAを使うには VBEを使えないといけません
イベントはどうするのかなど やはり
基本的なことは求められます
    • good
    • 0

=index(sheet1のA列絶対参照,(row()-1)*30+1)



みたいな感じの関数処理で何とかなりそうに見える。知らんけど。
    • good
    • 0

sheet1のデータが1000ならsheet2に移すデータは33個。


33個なら簡単です。sheet2のA1の=sheet1!A1をコピーしてsheet2のA2からA33に貼り付けて、あとでA1の1のところだけ直していけばいい。
でも、逆にsheet1のデータが30000個ならVBAですね。
この回答への補足あり
    • good
    • 0

VBAなら簡単

この回答への補足あり
    • good
    • 0

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