VBAで可変行のデータを自動集計する方法

このQ&Aのポイント
  • VBAを使ってシステムの効率化をしているエンジニアです。図に示された表には100件から1000件の可変するデータが入ります。右の4つのコミッションを合計して小計のところに自動計算したいのですが、データ量が変動するため、行数の指定が難しいです。Q&Aを見ると、offset関数と名前の定義を使うと良いと書いてあります。
  • 具体的には、以下のように名前の定義を行います。
  • その後、合計を行うセルの位置に移動し、SUM関数を使って指定した行数の範囲を合計します。以上の手順を踏むことで、可変行のデータを自動的に集計することができます。
回答を見る
  • ベストアンサー

VBA 可変行のデータを自動集計する

vbaでシステムの効率化をしている エンジニアです。 添付の図のような表に100件~1000件 の可変するデータが入ります。 右の4つのコミッションを合計して小計のところに自動計算したいのですが データ量が変動するため(この表の上下のデータ量も変動する) vbaで何行目から何行目を合計するという指定ができません Q&Aを見ていくと offset関数・名前の定義をうまく使ったらいいとあり   Worksheets("Sheet1").Names.Add Name:="名前A"   RefersTo:=Range("コミッション1") Worksheets("Sheet1").Names.Add Name:="名前B"   RefersTo:=Range("(2)小計")   ActiveCell.Offset(-3, 2).Range("名前A:名前B").Select ActiveCell.Offset(15, 2).Range("名前A").Activate ActiveCell.FormulaR1C1 = "=SUM(R[-18]C:R[-1]C)" ActiveCell.Offset(-18, 0).Range("名前A:名前B").Select End If これで合計できると思うのですが、 どなたか添削していただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

変なセル選択してそうですし、Formula固定値じゃ可変行になりませんよね。 定義済みの名前を使えば名前再定義は不要、Offset,Select,Activateも不要に思えます・・・ 混乱するようなら、すべきこと整理すると、  ・合計範囲のアドレスを取得(rowだけでいい)  ・"=SUM(...)"の式を、アドレスから生成する  ・小計セルに式を入れる 結果、たぶんこんな感じで↓  r = Range("なんとか1").row - Range("小計").row  Range("小計").FormulaR1C1 = "=SUM(R[" & r & "]C:R[-1]C)" ちなみに、ActiveCell,Offset,Rangeはいずれも、"Range"つまりセル範囲を返します。Range.Range()は、元セルを基準とした相対位置になり、混乱を招くので使用は控えた方が。 以下、すべて同じ。 - Range("B3") - Range("A1").Offset(2, 1) - Range("A2").Range("B2") - Range("A1").Offset(1, 1).Range("A2") 範囲調整は.Resize() 相対位置指定は、.Cells()のが分かりやすいです。 http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.range(v=office.11).aspx ただ、せめて動くか試した上で質問してほしいです。 試せば分かることは多いはず。 エンジニア名乗るなら尚・・・ 情報がなければ試行錯誤するのが本職。添削だなんて学生じゃあるまいし、入門書読んだかも怪しいレベルで無料コーナーに頼ってるよーじゃダメですよ。

ridi8888
質問者

お礼

本当に助かりました!! うまく伝わらなかったのですが、試行錯誤を重ねてたのです。 質問の仕方、説明が足りなくて誤解を招いてしまいました。 異国でIT担当者1人という状況で、強い焦りを出してしまいました。 本当にありがとうございました。 今度困った事があったら助けて下さい。

関連するQ&A

  • エクセルで行が可変する時、VBAの記述

    エンジニアのものです。 エクセルで売り上げ集計をVBAを使って効率化しています。 他のシートからデータをコピー、貼り付けるのですが 分量が一定ではありません。 今VBAで、データの合計と、行の挿入を自動化させようとしているのですが 分量が一定ではないために、うまく指定ができません。 Q&Aサイトを検索していると、offset関数・名前の定義をうまく使えとあり   Worksheets("Sheet1").Names.Add Name:="名前A"   RefersTo:=Range("B125")   Range("名前A").Select If ActiveSheet.Offset(-1, 0).Value = "1134 " Then .EntireRow.Resize(10).Insert shift:=xlDown End If これで 名前Aと定義したセル(集計表の一番下)の上に数値が入っていれば 10行挿入するはずだと思うのですが うまくいきません。 どなたかわかる方がいましたらアドバイスお願いします。

  • Excel VBAで表組みしたらデバック発生

    Excel VBAの初心者です。Windows Vistaで Excel2007を使っています。 表をマクロの実行で作成したいと思っています。 何もないエクセルブックより 「開発」→「マクロの記録」→「相対参照」 →「表の作成」→「記録終了」→「相対参照で記録の解除」 →「エクセルマクロ有効ブックで保存」 ところがこのマクロ記録が入ったブックを再度立ち上げ、 表をオールクリアにし、マクロボタンより表作成を実行 させようとすると、次のエラーメッセージがでました。 『実行時エラー'9' インデックスが有効範囲にありません。』 デバックからModule1をみると以下の記述となっていました。 Sub 表組み() ' ' 表組み Macro ' ' ActiveCell.Range("A1:E5").Select Selection.Copy Windows("Book1").Activate ActiveSheet.Paste ActiveCell.Columns("A:A").EntireColumn.Select ActiveCell.Rows("1:1").EntireRow.RowHeight = 11.25 ActiveCell.Rows("1:5").EntireRow.Select Selection.RowHeight = 21.75 ActiveCell.Columns("A:A").EntireColumn.ColumnWidth = 14.88 ActiveCell.Offset(0, 4).Range("A1").Select Application.CutCopyMode = False With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With ActiveCell.Offset(1, -3).Range("A1:D4").Select Selection.NumberFormatLocal = "#,##0_ " ActiveCell.Select ActiveCell.FormulaR1C1 = "78000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "102000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "9800" ActiveCell.Offset(-2, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "65000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "204000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "500" ActiveCell.Offset(-2, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "86000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "151000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "10200" ActiveCell.Offset(-2, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(0, -3).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(-4, -2).Range("A1:D1").Select Selection.AutoFilter End Sub 上から9行目(?)のWindows("Book1").Activateに 黄色い矢印が示され、また行全体が黄色く四角に 覆われていました。 おそらくこの記述に問題があると思いますが、 どんな記述に変えたらいいのか分かりません。 Excel VBAにお詳しい方ご教示願います。 なお、マクロで作成したい図を添付いたします。 参考にしていただければ幸いです。

  • セルに名前をつける

    excel2003 セルに名前を付与するマクロで繰り返し処理する設定を教えていただきたく。 構成: D12からD36のセルまで1行おきに名前をつけたい名称が13ケ登録されています 結合されたセルが (1)AG11:AH12、AG13:AH14、AG15:AH16…AG35:AH36 全部で13ケ (2)AI11:AJ12、AI13:AJ14、AI15:AJ16…AI35:AJ36 全部で13ケ 存在します (1)のセル名称はD12を参照し先頭には_CKC_を付加、末尾には_1を付加 (2)のセル名称はD12を参照し先頭には_CKC_を付加、末尾には_0を付加 という内容を下記のマクロで作成しました。 Sub Sample1() Dim name1 As String Dim name2 As String Dim name3 As String Dim name4 As String Dim name5 As String Dim name6 As String Dim name7 As String Dim name8 As String Dim name9 As String Dim name10 As String Dim name11 As String Dim name12 As String Dim name13 As String name1 = Range("D12") Names.Add name:="_ckc_" & name1 & "_0", RefersTo:="=$AG$11" Names.Add name:="_ckc_" & name1 & "_1", RefersTo:="=$AI$11" name2 = Range("D14") Names.Add name:="_ckc_" & name2 & "_0", RefersTo:="=$AG$13" Names.Add name:="_ckc_" & name2 & "_1", RefersTo:="=$AI$13" name3 = Range("D16") Names.Add name:="_ckc_" & name3 & "_0", RefersTo:="=$AG$15" Names.Add name:="_ckc_" & name3 & "_1", RefersTo:="=$AI$15" name4 = Range("D18") Names.Add name:="_ckc_" & name4 & "_0", RefersTo:="=$AG$17" Names.Add name:="_ckc_" & name4 & "_1", RefersTo:="=$AI$17" name5 = Range("D20") Names.Add name:="_ckc_" & name5 & "_0", RefersTo:="=$AG$19" Names.Add name:="_ckc_" & name5 & "_1", RefersTo:="=$AI$19" name6 = Range("D22") Names.Add name:="_ckc_" & name6 & "_0", RefersTo:="=$AG$21" Names.Add name:="_ckc_" & name6 & "_1", RefersTo:="=$AI$21" name7 = Range("D24") Names.Add name:="_ckc_" & name7 & "_0", RefersTo:="=$AG$23" Names.Add name:="_ckc_" & name7 & "_1", RefersTo:="=$AI$23" name8 = Range("D26") Names.Add name:="_ckc_" & name8 & "_0", RefersTo:="=$AG$25" Names.Add name:="_ckc_" & name8 & "_1", RefersTo:="=$AI$25" name9 = Range("D28") Names.Add name:="_ckc_" & name9 & "_0", RefersTo:="=$AG$27" Names.Add name:="_ckc_" & name9 & "_1", RefersTo:="=$AI$27" name10 = Range("D30") Names.Add name:="_ckc_" & name10 & "_0", RefersTo:="=$AG$29" Names.Add name:="_ckc_" & name10 & "_1", RefersTo:="=$AI$29" name11 = Range("D32") Names.Add name:="_ckc_" & name11 & "_0", RefersTo:="=$AG$31" Names.Add name:="_ckc_" & name11 & "_1", RefersTo:="=$AI$31" name12 = Range("D34") Names.Add name:="_ckc_" & name12 & "_0", RefersTo:="=$AG$33" Names.Add name:="_ckc_" & name12 & "_1", RefersTo:="=$AI$33" name13 = Range("D36") Names.Add name:="_ckc_" & name13 & "_0", RefersTo:="=$AG$35" Names.Add name:="_ckc_" & name13 & "_1", RefersTo:="=$AI$35" End Sub 付与したい名称が13ケであれば、上記の通りベタでも対応可能ですが、 付与したいセルが多くなった時、ベタで対応するのは大変なので、 Nケの名前を付与させるマクロを教えていただきたく。 マクロ初心者なので、VBAはベタで教えてください。

  • excel vbaでの質問になります

    このようなマクロを作成したのですが、セルに数式が入れてあると、どうしてもその下の空白の行に値を入力されてしまいます。 数式が入っているセルにもそのままセルに値を入れたいのですが・・ 宜しくお願いします。 Dim wb1 As Worksheet, r1 As Range Dim N As Integer, i As Integer Dim mycount As Long   Set wb1 = ThisWorkbook.Worksheets("請求書") mycount = Range("B111").CurrentRegion.Rows.Count Cells(111 + mycount, 2).Select ActiveCell.Offset(0, 0).Value = wb1.Range("C60").Value ActiveCell.Offset(0, 1).Value = wb1.Range("C61").Value ActiveCell.Offset(0, 12).Value = wb1.Range("C66").Value ActiveCell.Offset(0, 13).Value = wb1.Range("C74").Value ActiveCell.Offset(0, 14).Value = wb1.Range("C75").Value ActiveCell.Offset(0, 15).Value = wb1.Range("C84").Value ActiveCell.Offset(0, 16).Value = wb1.Range("C85").Value ActiveCell.Offset(0, 20).Value = wb1.Range("C69").Value ActiveCell.Offset(0, 22).Value = wb1.Range("C68").Value ActiveCell.Offset(0, 23).Value = wb1.Range("C76").Value ActiveCell.Offset(0, 24).Value = wb1.Range("C77").Value Exit Sub

  • VBAの書き方を教えてください 3

    何度も申し訳ございません。 以前にもこちらで質問させて頂いている者です。 Sheet1のrange("A1")をVLOOKUPで検索後の文字を取得し、同じ名前のシートを検索し、さらにrange("A1000")をアクティブにしてここからコードをつなげて処理しています。 range("A1")の処理が終わったら、range("A2")の処理に入り、range("A3") range("A4")を続けて処理を行っているのですが、range("A4")でVLOOKUPの検索が空白の場合、On Error GoTo myErrorで次のrange("A5")の処理に入りますが、On Error Gotoは1回のみの処理しかできないみたいで、range("A5")が空白の場合、実行時エラー9が発生してしまいます。 教えて頂いたコードを解読し、On Error Resume Nextなどを使おうとしているのですが、上手くできません。 1から10まで質問しっぱなしなのですが、どなたかご協力を頂けないでしょうか。 とりあえず自分の必要なコードはある程度省いて、2つ分のみ記載します。 本来この後、10回同じ処理を行います。 よろしくお願い致します。 Private Sub 記帳_Click()  On Error GoTo myError1  Dim i As Long  Dim myFlg As Boolean    For i = 1 To worksheets.Count If worksheets(i).Name = Range("A1").Value Then myFlg = True Exit For End If Next i If myFlg = True Then With worksheets(i) .Activate .Range("A1000").End(xlUp).Select    ActiveCell.Offset(1, 0).Select   ActiveCell = Range("J1") ActiveCell.Offset(0, 1).Select ActiveCell = Range("K1") End With Else MsgBox "該当シートなし" End If myError1: On Error GoTo myError2 For i = 1 To worksheets.Count If worksheets(i).Name = Range("A2").Value Then myFlg = True Exit For End If Next i If myFlg = True Then With worksheets(i) .Activate .Range("A1000").End(xlUp).Select ActiveCell.Offset(1, 0).Select   ActiveCell = Range("J1") ActiveCell.Offset(0, 1).Select ActiveCell = Range("K1") End With Else MsgBox "該当シートなし" End If End sub

  • エクセルVBAで、複数のブックからデータベースを作りたい

    こんにちは。VBAをはじめたばかりの者です。 変数の使い方で教えていただきたいことがあります。 Dim myFLName As String myFLName = ThisWorkbook.Path & "\001.xls" Workbooks.Open Filename:=myFLName, ReadOnly:=True Workbooks("dbase.xls").Activate Range("A2").Select ActiveCell.Value = 1 ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R3") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("C2") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R2") ActiveCell.Offset(1, -3).Select 001.xls~(連番でない)200.xlsくらいまでのファイルがあり、 同じフォルダにdbase.xlsを作って1ブックから1レコードになるようにしたいと 思います。 こんな感じで1行目はできたのですが、2行目の1列目に「2」を入れ、 2列目からは001.xlsの次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。

  • VBAを使ってエクセル上の表の集計を出したいのですが。

    初心者ゆえ稚拙な質問をお許しください。 A B C D E    C=引出額 1 * * * * 5    D=預入額 2 * * 1 * 4    E=合計額 3 * * * 1 5 エクセルでデーターを随時入力していくための上記のような表を多数のシートに作成したのですが、各シートに関数を入れていると容量的に重たくなってしまうので、VBAを使って下記のようにマクロを組んでみたのですが、引出額もしくは預入額に間違った値を入力した際削除すると、ひとつ上のレコードの値になってしまいます。 要望を言えば、引出額、預入額のセルに間違った値を入力した際削除しても余計な値が入らなく、該当のセルが空白の時は、その合計額のセルも空白にさせたいのですが、何かいい方法はないでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 6 Then ActiveCell.Offset(columnoffset:=1).Value = ActiveCell.Offset(rowoffset:=-1, columnoffset:=1).Value - ActiveCell.Offset(columnoffset:=-1).Value End If If Target.Column = 7 Then ActiveCell.Value = ActiveCell.Offset(rowoffset:=-1).Value + ActiveCell.Offset(columnoffset:=-1).Value End If End Sub Worksheet_Changeにこだわっているわけではありません。 よろしくお願いします。

  • VBAが止まります。

    皆さん、いつもありがとうございます。 下から14行目の『 objMail.Attachments.Add asrs1』で止まってしまします。 下から14行目の『 objMail.Attachments.Add asrs1』で止まってしまします。 asrs1をadrs1へ修正したりしましたが、改善されません。 昨日まで動いたいたのですが。 皆様、修正方法を教えていただけますでしdょうか。 ------------------------------------------------------- Sub メール作成() Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Dim wsMail As Worksheet Dim filead As String Dim tenp1 As String Dim tenp2 As String 'メール立ち上げ Set objOutlook = New Outlook.Application Set wsMail = ThisWorkbook.Sheets("リスト") '添付ファイルのアドレスを変数にする filead = Worksheets("リスト").Range("B3").Value '共通添付データのアドレスを読む tenp1 = filead & "\" & Worksheets("リスト").Range("B4") tenp2 = filead & "\" & Worksheets("リスト").Range("B5") Dim kobetsumail1 As String Dim kobetsumail2 As String Dim adrs1 As String Dim asrs2 As String '変数iを設定。最初は1 Dim i As Long i = 1 '送付前の確認メッセージ Dim rc As Long rc = MsgBox("記載に誤りが無いことを確認しましたか?", vbYesNo + vbQuestion, "確認") If rc = vbNo Then MsgBox "中断しました" End End If '基準となるセルを選択 Worksheets("リスト").Select Range("B7").Select '取引先名が書かれているB列が空欄になるまで続ける Do Until ActiveCell.Offset(i, 0).Value = "" '送付チェック欄が○なら作業を続ける If ActiveCell.Offset(i, 2).Value = "○" Then Set objMail = objOutlook.CreateItem(olMailTtem) '個別メールのデータ名称を読む Dim CC12(1) As String CC12(0) = ActiveCell.Offset(i, 6).Value CC12(1) = ActiveCell.Offset(i, 8).Value 'メールを作成する With wsMail objMail.to = ActiveCell.Offset(i, 4).Value objMail.CC = Join(CC12, ";") objMail.Subject = Range("B1").Value objMail.Bodyformat = olFormatPlain objMail.body = Range("B7").Offset(i, 0) & vbCrLf & Range("E7").Offset(i, 0) & "様" & vbCrLf & vbCrLf & Range("B2").Value & vbCrLf & vbCrLf kobetsumail1 = ActiveCell.Offset(i, 9).Value asrs1 = filead & "\" & kobetsumail1 kobetsumail2 = ActiveCell.Offset(i, 10).Value asrs2 = filead & "\" & kobetsumail2 If Range("B4").Value <> "" Then objMail.Attachments.Add tenp1 End If If Range("B5").Value <> "" Then objMail.Attachments.Add tenp2 End If If ActiveCell.Offset(i, 9).Value <> "" Then objMail.Attachments.Add asrs1 End If If ActiveCell.Offset(i, 10).Value <> "" Then objMail.Attachments.Add asrs2 End If objMail.Display objMail.Save End With End If i = i + 1 Loop Set objOutlook = Nothing MsgBox "下書きに保管しました" End Sub

  • 連続印刷処理前に確認しOKしてから再開するマクロ

    連続印刷マクロを作成したのですが、印刷の手前で確認を入れたいので、その処理を教えてください。 エクセルの表は項目が14列あり、999行です。 印刷は、2種類のシートに分け印刷できるようになっているのですが、確認は1度だけを考えています。 Sub 印刷_Click() Worksheets("集計・印刷").Activate '作業シート名 Range("A2").Select '番号(001~999)をこの次の"A3"セルより転記される。 Do '↓ ※1度の作業で15個の番号を最大とします。 'アクティブセルを1つ下に移動 ActiveCell.Offset(1, 0).Select '1度の作業で15枚印刷する。 '空欄であれば、プログラムを終了する 'Trim関数は前後のスペースを消去する If Trim(ActiveCell.Value) = "" Then Exit Do End If '非表示セルは印刷の対象としない If ActiveCell.EntireRow.Hidden = False Then If ActiveCell.Offset(, 2).Value = "単品" Then 'C列で単品の判断をする。 With Worksheets("A") 'Aシートへ記入 .Range("C3").Value = ActiveCell.Offset(0, 0).Value '番号 .Range("L24").Value = ActiveCell.Offset(0, 2).Value '種類 .Range("F3").Value = ActiveCell.Offset(0, 3).Value '型式 .Range("C23").Value = ActiveCell.Offset(0, 4).Value '測定日 .Range("C24").Value = ActiveCell.Offset(0, 5).Value '製造日 .Range("C9").Value = ActiveCell.Offset(0, 6).Value 'ライン .Range("C10").Value = ActiveCell.Offset(0, 7).Value '担当 .Range("C7").Value = ActiveCell.Offset(0, 9).Value '外観 .Range("C8").Value = ActiveCell.Offset(0, 10).Value '気密 '繰返し処理をしているので一度に印刷される。 .PrintOut End With ElseIf ActiveCell.Offset(, 2).Value = "複数品" Then'C列で複数品の判断をする。 With Worksheets("B") 'Bシートへ記入 .Range("C3").Value = ActiveCell.Offset(0, 0).Value '番号 .Range("L24").Value = ActiveCell.Offset(0, 2).Value '種類 .Range("F3").Value = ActiveCell.Offset(0, 3).Value '型式 .Range("C23").Value = ActiveCell.Offset(0, 4).Value '測定日 .Range("C24").Value = ActiveCell.Offset(0, 5).Value '製造日 .Range("C9").Value = ActiveCell.Offset(0, 6).Value 'ライン .Range("C10").Value = ActiveCell.Offset(0, 7).Value '担当 .Range("C7").Value = ActiveCell.Offset(0, 9).Value '外観 .Range("C8").Value = ActiveCell.Offset(0, 10).Value '気密 .Range("C11").Value = ActiveCell.Offset(0, 23).Value '(1)min .Range("C12").Value = ActiveCell.Offset(0, 24).Value '(1)max .Range("F7").Value = ActiveCell.Offset(0, 25).Value '(2)min .Range("F8").Value = ActiveCell.Offset(0, 26).Value '(2)max '繰返し処理をしているので一度に印刷される。 .PrintOut End With End If End If Loop End Sub

  • エクセルVBAが書ける方へ

    お世話になります。 下記VBAはB19からB28までのデータをA11:12の横列に貼り付けさせる内容です。 Sub 特価() ' ' 特価 Macro ' ' Range("A11:A12").Select ActiveCell.FormulaR1C1 = "=R[8]C[1]" Range("B11:B12").Select ActiveCell.FormulaR1C1 = "=R[9]C" Range("C11:C12").Select ActiveCell.FormulaR1C1 = "=R[10]C[-1]" Range("F11:F12").Select ActiveCell.FormulaR1C1 = "=R[11]C[-4]" Range("H11:I12").Select ActiveCell.FormulaR1C1 = "=R[12]C[-6]" Range("T11:U12").Select ActiveCell.FormulaR1C1 = "=R[13]C[-18]" Range("X11:Y12").Select ActiveCell.FormulaR1C1 = "=R[14]C[-22]" Range("AD11:AE12").Select ActiveCell.FormulaR1C1 = "=R[15]C[-28]" Range("AN11:AO12").Select ActiveCell.FormulaR1C1 = "=R[16]C[-38]" Range("AW11").Select ActiveCell.FormulaR1C1 = "=R[17]C[-47]" Range("B23").Select End Sub これに下記内容を追加したいのですが教えて下さい。 ・B19からB28のデータは入力後消す。 ・貼り付けたら次に入力する時は下の行(A13:14)に貼り付ける。 ・同様にデータを消してA15:16に貼り付ける。以下、下の行に貼り付けていくようにする。 ・貼り付けたらカーソルはB19を選択した状態にする。 言葉足らずでしたら補足します。 何卒宜しくお願い致します。

専門家に質問してみよう