• ベストアンサー

エクセルマクロでの参照方法の変更

久々にエクセルのマクロで手直しが必要になりました。 色々調べましたが、判らなくて質問致します。 以下のマクロでAJ6に検索キーを作成しています。 Range("C5").Select 行 = Selection.End(xlDown).Row Range("AJ6").Select ActiveCell.FormulaR1C1 = "=RC[-35]&"" ""&RC[-34]&"" ""&RC[-33]&"" ""&RC[-32]" Selection.AutoFill Destination:=Range("AJ6:AJ" & 行) Range(Selection, Selection.End(xlDown)).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False Range("A5").Select の様にRC[-35]ではなく$A6の様に絶対参照?にしたいのです 理由として間の列が追加になるたびにRC[-35]の数値の増減しないといけないので手間が掛かります。 列を増やしても$A6の様に固定ってできないでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 見かけでは、R1C1方式の方が優れていますね。 私なりに、ご質問のコードを移植してみました。 以下のようにすれば、絶対参照になっています。 Sub TestSample() Dim myRow As Integer  myRow = Range("C5", Range("C65536").End(xlUp)).Rows.Count  With Range("AJ6").Resize(myRow)    .FormulaLocal = "=RC1&"" ""&RC2&"" ""&RC3&"" ""&RC4"    .Value = .Value  End With Range("A5").Select  End Sub

naopon2000
質問者

お礼

お返事遅くなり申し訳ありません。 上記マクロでうまく行きましたー 本当に助かりました、ありがとうございます!

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

R6C1 で $A$6 と同じになります マクロのヘルプでなくワークシートのヘルプの「R1C1」を検索してみてください。説明と例が載っていますよ

naopon2000
質問者

お礼

お返事が遅くなり申し訳ありませんでした。 ヘルプ参照に載っていましたね。 まだまだ勉強不足でした。ありがとうございました。

関連するQ&A

  • マクロ 可視セルへコピーする方法

    こんにちは。よろしくお願いします。 A~V列、300~400行程度の表を作っています。 8行目をコピーして空白行へペーストしたいのですがどのようにすれば良いでしょうか。 マクロの記録でつくったものは ActiveSheet.Paste でエラーになります。 またペースト開始行をA17ではなくて可変なものに変えたいです。 よろしくお願いします。 Sub 下までコピー() Range("A8:V8").Select Selection.Copy Selection.AutoFilter Field:=2, Criteria1:="=" Range("A17:V" & Range("B5").End(xlDown).Row).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter Field:=2 End Sub

  • エクセルVBAで値のカウントをしたい

    C列~AA列まで値が入っています 1行目にはタイトル 2行目からそれぞれ値が入っており、終了行は毎回ランダムです 各列毎に値の合計と1以上の値の合計数を表示するために下記のマクロを使用しているのですが、もっとスマートな方法は無いでしょうか? 現在のマクロだとマクロ行数がとても多いものになっています。 Sub Count() With Range("C2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With '本当はCの最終行に直接COUNTIFを書き込みたいが、他のセルを使用しないと0になる Range("A1") = "=COUNTIF(C2:C10000,"">=1"")" Range("A1").Select Selection.Copy Range("C1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False With Range("D2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With Range("A1") = "=COUNTIF(D2:D10000,"">=1"")" Range("A1").Select Selection.Copy Range("D1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False '以降AAまでセルの位置を変えた同一マクロを繰り返す End Sub

  • マクロでシート2~6のデータをシート1に転記したい

    マクロでシート2~6のデータをシート1に転記したいです。 シート2~6のデータを シート1に順番に転記したくてマクロの記録を利用して作成しました。 シート2~6は列は同じですが行数は異なります。 また行数は作業の都度異なります。 同じ記述が繰り返されているので もう少し記述が短くできるのではと思うのですが どうすればいいでしょうか? Sub データ更新() 'シート1の前回データをクリア Sheets("シート1").Select Range("A2:Q2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("A2").Select Sheets("シート1").Select Range("A1").Select Sheets("シート2").Select Range("A1").Select 'ヘッダーも合わせて取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート3").Select Range("A2").Select 'データのみ取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート4").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート5").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート6").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub

  • エクセルのマクロ

    こんばんは、宜しくお願いします。 エクセルで行を挿入し前行の数式をコピーするマクロの記録を行ったのが下記の内容です。 Sub Sounyu() ' ' Sounyu Macro ' Rows("4:4").Select Selection.Insert Shift:=xlDown Range("B3:C3").Select Selection.AutoFill Destination:=Range("F3:F4"), Type:=xlFillDefault Range("F3:F4").Select Range("G3").Select Selection.AutoFill Destination:=Range("G3:G4"), Type:=xlFillDefault Range("G3:G4").Select Range("A2").Select End Sub 最後の Range("A2").Selectを挿入した行のAのセルへ カーソルがいくようにするにはどのように変更したら 良いのでしょうか? 教えてください。

  • Excel マクロ

    マクロで一部分だけ範囲選択をかけたいのですが、 A列から指定行までと1行目の最右列までを範囲選択をしたいのですができるのですか? 出来ましたら、コードを教えてください。 コードの記述は下のとおりです。 Range("A1").Select Range(Selection, Selection.End(xlDown)).Select a1 = Range("xfd1").End(xlToLeft).Select Endcolumn = Application.WorksheetFunction.Max(a1)

  • エクセルマクロで教えてください

    エクセル2003です。 自動マクロで下記のようなマクロを造ったんですが Selection.End(xlDown).Select   Range("A29:D29").Select  ■A29を止まったセルの番号にしたいのです。(A**からD**まで)     With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("A30").Select ■A30を止まったセルの番号にしたいのです 以上2箇所の指定を教えていただけますでしょうか。 よろしくお願いいたします。

  • マクロの記録を書きかえる

    下記の構文を可能な限り短くして書きたいのですが、 どのように省略出来るのかがわかりません。 <シート1のB列のデータの入力されているセルまでコピーし、シート2のA2から値で貼付ける> Range(\"B2\").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets(\"Sheet1\").Select Range(\"A2\").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ご指導宜しくお願い致します。

  • マクロについて教えてください

    マクロ初心者です。 A~D列の表が少ない時100行、多い時400行あり、同じ操作を何回か繰り返すため、できればマクロで処理したいと思っています。 マクロ記録で作成したのですが、最終行が一定ではないため行数が増えると上手く作動しません。 どこを修正したらいいでしょうか。ご教示いただければ幸いです。 Sub Macro1() ' ' Macro1 Macro ' ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""集計"","""")" Range("G2").Select Selection.AutoFill Destination:=Range("G2:G4"), Type:=xlFillDefault Range("G2:G4").Select Range("H2").Select ActiveCell.FormulaR1C1 = "=SUMIF(R2C1:R13C1,RC[-1],R2C2:R13C2)" Range("H2").Select Selection.AutoFill Destination:=Range("H2:H4"), Type:=xlFillDefault Range("H2:H4").Select Range("H5").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" Range("H6").Select End Sub ちなみに作成したいマクロ 1.F列にA列の「集計」を取り出して、G列にF列の「集計」文字を取り除く。 2.H列にB列「数」を計算する 3.H列の最終行に合計を出す。

  • このマクロ、何をしているのかわかりますか?

    ' Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:= _ False Range("A1:A37").Select Selection.Copy Range("S1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Columns("A:A").Select Application.CutCopyMode = False Selection.ClearContents Range("A1").Select End Sub わかる方 お願いいたします!

  • Excelでマクロを繰り返したい。

    Excelでマクロを記録したら以下のようになりました このマクロを以下の条件で繰り返したいのですが。 Sub Macro1() '------------- '----------------------- ' Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=5*", Operator:=xlAnd, _ Criteria2:="<>5@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=6*", Operator:=xlAnd, _ Criteria2:="<>6@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=7*", Operator:=xlAnd, _ Criteria2:="<>7@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=8*", Operator:=xlAnd, _ Criteria2:="<>8@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 条件= Field:は4~35位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

専門家に質問してみよう