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

現在、週に一度報告用のエクセルファイルに内容を各メンバーが入力し、報告が終わるとその内容をアーカイブ用の別のエクセルファイルにコピペしたうえで元のファイルに記載した内容をクリアして繰り返し使用しています。
これをスプレッドシートで1ファイルで運用しようと思うのですが、どうせならコピペとクリアの作業をマクロで自動化したいと思っています。
今までは入力がされている部分だけを人間が目でみてコピペしていましたが、これをマクロでやる方法を教えて下さい。
ネットで検索し、Cells(Rows.Count,列).End(xlUP).Rowを使うことで入力のある最終行を取得する方法はわかりました。
例えばA3のセルを起点として、A列の最終行までとE列の同じ行までの範囲をコピーするにはどのような構文をかけばよいでしょうか?
もしA5まで入力があればA3からE5までの範囲を、A8まで入力があればA3からE8までをコピーするということです。

A 回答 (2件)

こんにちは



スプレッドシートは全く存じませんけれど・・・

>ネットで検索し、Cells(Rows.Count,列).End(xlUP).Rowを使う
>ことで入力のある最終行を取得する方法はわかりました。
それって、エクセルのVBAの話ではないでしょうか?
(VBAならご提示のコードで取得できますけれど・・)
スプレッドシートの場合はGAS(Google Apps Script)のはずなので、違うのではないかと思いますが?

簡単に検索してみたところ、getLastRow()で最終行を取得できないのでしょうか?
https://developers.google.com/apps-script/refere …
※ 上記はGASのリファレンスですので、メソッド等を確認する際に役立つかと・・


あるいは、エクセルVBAに関してのご質問だったのでしょうか?
であるなら、ご質問の範囲をコピーする場合なら
 mr = Cells(Rows.Count, 1).End(xlUp).Row
 mr = Application.Max(mr, 3)
 Range("A3:E3").Resize(mr - 2).Copy
で可能と思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
VBAとGASを混同するような質問になってしまい申し訳ありません。
リンクいただいたサイトを参考になんとかできそうです。
ありがとうございました!

お礼日時:2022/04/06 06:06

ぐぐってみると、



値が存在するセル範囲を取得する:getDataRange()
https://gsuiteguide.jp/sheets/getdatarange/

データがシートに存在している限りってならこれかな?

それともVBAであれば、

CurrentRegion
https://kabu-macro.com/detail.php?dir=word&dir2= …

こちら?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
VBAとGASを混同するような質問になってしまい申し訳ありません。
リンクいただいたサイトを参考になんとかできそうです。
ありがとうございました!

お礼日時:2022/04/06 06:08

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