[[20220621203805]] 『指定範囲内の最終行に値をコピー貼り付けする方法』(りんご) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定範囲内の最終行に値をコピー貼り付けする方法について』(りんご)

こんにちは。vba初心者のものです。
言葉足らずで申し訳ございませんが、ご教示いただけると幸いです

やりたい事
・ある値をコピーし、別端末のExcelファイルを開き、対応するシートの指定範囲内の最終行に貼り付け
(例 店の商品の1日の売り上げ件数を各品目ごとに合計を自動計算するようにしたファイルから、
   合計の値だけをコピー →別ファイルの日報統計表に日毎にその値を貼り付ける)

  日報統計表は 列が月、行に日付が記載された表
  各列、各行の最終セルには各々の合計が出るように関数が入力されているため、それを含まないよう
 に範囲を指定し、その中での最終行にコピー貼り付け
・月毎に列が違うため、月の最終行になったら自動で、次の月の列の頭に貼り付けできるようにする

(応用)
・あるの品目では、男女別の合計を、同じシート、同行、隣合う列の最終行にそれぞれコピー貼り付け 
 (例  シート: 品目名、大きい列(A列+B列の2列) :1月 、A列:男 B列:女、 行:16日)

・ある品目では、コピー元の2つの合計の値を、対応するシートの指定範囲内の最終行にコピー貼り付け
 
質問がざっとしていて申し訳ございませんが、上記の内容で最善のマクロがありましたら
教えていただけると大変助かります
よろしくお願いいたします。

< 使用 Excel:unknown、使用 OS:unknown >


レイアウトがわかる形式で、
サンプルデータも使って説明お願いします。

(マナ) 2022/06/21(火) 21:30


# 重なりました。

 余りあれこれ書かずに、一つに絞って、
 表のレイアウトを示しながら質問されたらいかがですか?

      A列     B     C
 1行
 2
 3
 のような形式で説明して下さい。
 (投稿にあたっては、行を半角のspaceで始めると、レイアウトが崩れにくいですよ)
(γ) 2022/06/21(火) 21:38

曖昧な質問で申し訳ございません。
ご丁寧にお返事いただきありがとうございます。
ご指摘にございましたように現在のマクロを参考までに記載いたします。
コピー元のシート名:(売上日報(入力))の値:(G2)をコピーし、別端末の(日報統計)というフォルダのシート名:(食料品)の範囲(B3:M33)を指定して、その範囲内の最終行に貼り付けできるようにしたいです。範囲指定が上手く反映されていないようですので、その原因をご教示いただけると幸いです。
Sub 日報統計

Workbooks.Open"\\端末IP\日報統計"
HIRAKU=ActiveWorkbook.Name
thisworkbook.Active
Sheets("売上日報(入力)").Select
Range("G2").Select
Selection.Copy

Windows(HIRAKU).Active
Sheets("食料品").Select
Dim c As Range
Set c = Range(B3:M33)
Dim r As Range
Set r = Rows(c.Row + c.Rows.Count -1)

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats,Operation:= _
xlNone,SkipBlank:=False,Transpose:=False

また、日毎の入力で現在、月毎に列が変わっていくので、月が変わったら次の列の頭に貼り付けできるようなマクロがございましたら、併せてご教示いただけると幸いです。

(りんご) 2022/06/22(水) 12:09


>その範囲内の最終行
とは、その範囲内で入力があった最終行ということですか?
それとも入力は関係ないのですか?そうなら33行目と決まってしまいますね。
33行目のすべての列に貼り付けるのであれば、今のコードで最後のところを
r.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
とすればよいと思います。
(γ) 2022/06/22(水) 17:08

説明不足で申し訳ございません。
範囲内の入力があった最終行の次に貼り付けたいです。
下記の表を用いると、6月22日は、6月21日(G23)の次のセルのG24に自動貼り付け

「売上日報(入力)」のG2に常に、その日の食料の売上合計が自動で反映されます。
しかし、「日報統計」→「食料品」は日報として入力するので日々セルが変動します。
なので、前日入力した次のセル、最終行の次のセルに貼り付けできるようにと考えています。(B3:1月1日、M33:12月31日)

月初めについて、、
下記の表を用いると、3月1日ならD3, 5月1日ならF3に貼り付けたいです。(各月31日まで入力されていなくても、存在する月末の日付まで入力したら次の月の頭に飛ぶ)

[食料品シート]  ■…入力済みセル
__________A____B___C___D___E___F___G___H・・・M(列)
1 食料品統計
2_________1月_2月_3月_4月_5月_6月_7月・・・12月
3____1日___■__■___■___■___■___■
4____2日___■__■___■___■___■___■
5____3日___■__■___■___■___■___■
6____4日___■__■___■___■___■___■
7____5日___■__■___■___■___■___■

23__21日___■__■___■___■___■___■←6月21日分(最終行)
24__22日___■__■___■___■___■___□←ここに貼り付け
30__28日___■__■___■___■___■
31__29日___■_______■___■___■
32__30日___■_______■___■___■
33__31日___■_______■_______■
34___計)___SUM(B3:B33)・・・以下各列の合計式
(りんご) 2022/06/22(水) 19:11

2行目のデータの形式が不明(Date型か文字列か)ですが、
2行目でその月の列を求め(Application.Matchを使うとよいかと思います)、
その列の34行目から上にジャンプ(.End(xlUp))して、その下(.Offset(1))
とすれば、書き込み位置がわかります。

ネットで「VBA 最終行」で検索すればたくさん記事があります。例えば、
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html
などを参考にしてみてはどうですか?

(γ) 2022/06/22(水) 20:21


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.