• ベストアンサー
  • すぐに回答を!

一度に、任意の列全体へ、関数をコピーするマクロは?

下記コードのように、 「 E 列 」 だけに実行するのではなく、 「 実行前 」 に、手動にて、好みの任意のセル1つに  「 関数 」 を貼り付けます。 そしてマクロを実行し、 下記 「 実行後 」 のようにするには、どのようなコードになりますでしょうか? 下記のような変数を組み入れるのだと思いますが、うまく出来ません。 ただ、先頭の 「 行番号 ( 変動しますが、例では60 ) 」 は、 手動にて貼り付けますので事前に解かっているとします。 また、 「 オートフィルタ 」 後に、使用する予定です。 何卒、よろしくお願い致します。 ------------------ Sub test() Range("E60").Select ActiveCell.FormulaR1C1 = "=RC[2]" Selection.AutoFill Destination:=Range("E60", Range("C65536").End(xlUp).Offset(0, 2)), Type:=xlFillDefault End Sub ------------------ Dim r As Range, base As Range Dim x, y Dim i Set r = Selection Set base = Selection.Cells(1, 1) x = r.Columns.Count y = r.Rows.Count ---実行前(オートフィルタ後)------------------ C列            E列  ・              ・  ・              ・ 2007/10/13       =G60    2007/10/13 2007/10/13 2007/10/13 2007/10/13 2007/10/14 2007/10/14 --実行後------------------- C列            E列  ・              ・  ・              ・ 2007/10/13       =G60    2007/10/13       =G60 2007/10/13       =G60 2007/10/13       =G60 2007/10/13       =G60 2007/10/14       =G60 2007/10/14       =G60

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数1099
  • ありがとう数3

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

  • ベストアンサー
  • 回答No.1
  • papayuka
  • ベストアンサー率45% (1388/3066)

こんな意味でしょうか? 関数を入れたセルを選択して実行します。(例の通りだと セルE60) Sub Test() Dim r As Range Set r = ActiveCell With ActiveSheet   .Range(r, .Cells(.Cells(65536, 3).End(xlUp).Row, r.Column)).Formula = r.Formula End With End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご回答、誠に有難うございました。 不精な、文面をご理解して頂いて、有難うございました。 バッチリでございました。

関連するQ&A

  • 好みの列にフィルタをかけたいのですが・・?

    Windows XP Home Edition Excel 2002 変数関連の記述の仕方が間違っていると思いますが、 いろいろ試してみましたが、うまく実行できません。 何卒、ご教示お願い致します。 Sub オートフィルタtest() Dim i As Long Dim S As Range Dim Sdown As Range Set S = Selection.Cells(1, i) Set Sdown = Selection.Cells(2, i) Rows("6:6").AutoFilter Sheets(1).Activate Selection.AutoFilter Field:=i, Criteria1:=">=2", Operator:=xlAnd, _ Criteria2:="<3" With Range(Sdown, Sdown.End(xlDown)) .Interior.ColorIndex = 40 End With End Sub

  • 左のセルと違った値だけを、他のセルに書き込む

    ワークシートの任意の「G列とH列」において、G列の値と違っていたら、 P列にその違った値だけを書き込む。 「違った値」の選択まではなんとかできましたが、それからがどうも進みません。 何卒ご教示お願い致します。 ------------ Sub tes1() Dim r As Range, base As Range Dim x, y Dim i Set r = Selection Set base = Selection.Cells(1, 1) x = r.Columns.Count y = r.Rows.Count Selection.RowDifferences(ActiveCell).Select ・ ・ --------------- G   H ・・・・P 98   94   98 101  101    91   95   91 69   69 71   71 99   95   99 89   89 94   94 67   67 68   64   68

  • このコードのどこが違ってますか?

    Windows XP Home Edition Excel 2002 左表(行方向)のコードは図のように問題なく動作しますので、 今度は、 右表(列方向)のように実行したいのですが、 最下記の「'---- 」間の箇所だけを変更すればいいかなと思いましたが、 どこが違ってますでしょうか? それと、(y * myCol) の基本的な日本語訳はどおなりますか? 何卒、ご教授お願い致します。 Sub 左表() Dim r As Range, base As Range Dim x, y Dim i, myCol Range("B3:D5").Select '省略 Set r = Selection Set base = Selection.Cells(1, 1) x = r.Columns.Count y = r.Rows.Count '------------------ For myCol = 1 To x - 1 base.Offset(0, myCol).Resize(y).Copy base.Offset(y * myCol) '●前記myColの各列を行方向(縦方向)に空白セルを詰めて、B列の下へ順次貼り付けていく '------------------ Next End Sub ========================== Sub 右表() '--変更箇所--------  For myCol = 1 To y - 1 base.Offset(myCol, 0).Resize(x).Copy base.Offset(myCol * x) '------------------

その他の回答 (2)

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

こんにちは。 ご質問者さんは、難しく考えすぎなのだと思います。ご質問の内容からすると、単に、こういうように直せばよいと思います。質問内容からすると、列も任意の場合も含めるようですから、一応、相対位置を取らないといけませんね。Take it easy! Sub TestR() Dim Col As Integer Col = ActiveCell.Column - 3 'C列に対して ActiveCell.AutoFill Destination:= _ Range(ActiveCell, Range("C65536").End(xlUp).Offset(0, Col)), Type:=xlFillDefault End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

こんばんは、 ご回答、誠に有難うございました。 質問内容の実例は、「絶対参照」で、私が間違っておりましたが、 実行結果は、希望通りでした。

  • 回答No.2
  • imogasi
  • ベストアンサー率27% (4566/16351)

質問文が長々と書いてあるが、「D3(例えば)に入れた数式を、データ最下行まで、複写したい(VBAで)」ということではないの? 普通は実例を挙げることが判りやすさにつながるが、文章の方が意図が伝わりやすい例もある。 ーー 複雑なコードが書いてあるが、下記のように簡単で良いのでは。 番地を変化させないなら(質問例はこれらしい) Sub test01() d = ActiveSheet.Range("A65536").End(xlUp).Row For i = 3 To d ActiveSheet.Cells(i, "B").Formula = ActiveSheet.Cells(3, "B").Formula Next i End Sub ーー 下方向の複写なら(番地の行番号は変化)(マクロの記録が使える例) Sub test02() d = ActiveSheet.Range("A65536").End(xlUp).Row Range("B3").AutoFill Destination:=Range("B3:B" & d), Type:=xlFillDefault End Sub 質問の意図と違う場合は無視してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答、誠に有難うございました。 おっしゃられる通りでした。 質問内容の実例が間違っておりました。大変申し訳ありませんでした。 2007/10/13       =G60    2007/10/13       =G61 2007/10/13       =G72 2007/10/13       =G63 2007/10/13       =G64 2007/10/14       =G85 2007/10/14       =G86

関連するQ&A

  • 【Excel】 マクロを補足してください。

    A1をダブルクリックすると E、D、C、B列のオートフィルタで「すべて」を 選択するようにしました。 続けて 同じシートで、B1をダブルクリックするとE、D、C列の オートフィルタで「すべて」を選択、 C1をダブルクリックするとE、D列のオートフィルタで 「すべて」を選択するようにしたいのですが、 どのようにしたらよいのでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True Selection.AutoFilter Field:=5 Selection.AutoFilter Field:=4 Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=2 End Sub お願いいたします。

  • 再:好みの列にフィルタをかけたいのですが・・?

    大変申し訳ありませんでした。 前回、画像を間違って削除してしまいましたので、 再度、同じ質問を投稿し直します。 前回のぺージ http://oshiete1.goo.ne.jp/qa5593727.html Windows XP Home Edition Excel 2002 変数関連の記述の仕方が間違っていると思いますが、 いろいろ試してみましたが、うまく実行できません。 何卒、ご教示お願い致します。 ***追記******************** 添付画像は Rows("5:5").AutoFilter となっております、間違えました。 (1)図1の好みの「項目のセル1つ(例:い)」を手動で選択してから  「質問のマクロ実行」します。 (2)次に、同様に好みの他の「項目のセル1つ」を手動で選択してから   (1)と同じ「質問のマクロ実行」します。 (3)次に、同様に好みの他の「項目のセル1つ」を手動で選択してから   (1)と同じ「質問のマクロ実行」します。 ・ ・ というように、繰り替えし実行したいのです。 (エクセルの繰り替えし機能が使えればよいのですが、当マクロは当方のエクセルでは使えないようでございます) もちろん、選択する「項目のセル1つ」は4行目でもどこでも結構でございます。 **************************** Sub オートフィルタtest() Dim i As Long Dim S As Range Dim Sdown As Range Set S = Selection.Cells(1, i) Set Sdown = Selection.Cells(2, i) Rows("6:6").AutoFilter Sheets(1).Activate Selection.AutoFilter Field:=i, Criteria1:=">=2", Operator:=xlAnd, _ Criteria2:="<3" With Range(Sdown, Sdown.End(xlDown)) .Interior.ColorIndex = 40 End With End Sub

  • オートフィルタのマクロについて

    オートフィルタのマクロを組もうとしているのですが、フィルタ条件に別シートのセルの値を入れたいのですが、そこがどうもうまくいきません。 作成したマクロは以下の通りです。 Sub 累計計算マクロ() Dim aRange As Range, bRange As Range, i As Date Set aRange = Sheets("累計").Range("B1") Set bRange = Sheets("累計").Range("B2") i = aRange.Value Sheets("クイーンエステート").Activate Range("A13:L13").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:="<=i", Operator:=xlAnd End Sub どなたか助けてください! 宜しくお願い致します。

  • オートフィルタ適用後のマクロ実行

    過去の「Excel グラフのプロットからデータを見つける」という質問に回答されていたプロットされたマーカーをひとつだけ選択してマクロを実行は出来たのですが、オートフィルター適用後のグラフに対してはうまくいきません。どのように修正したら良いのかご教授ください。 Sub Test1() Dim myPoint As Point Dim myFormula As String Dim myPDLname As String Dim myWsName As String Dim x As String Dim y As String Dim n As Integer If TypeName(Selection) <> "Point" Then Exit Sub If TypeName(Selection) = "Point" Then Set myPoint = Selection myFormula = myPoint.Parent.Formula With myPoint .HasDataLabel = True myPDLname = myPoint.DataLabel.Name .HasDataLabel = False End With n = Split(myPDLname, "P")(1) x = Split(myFormula, ",")(1) y = Split(myFormula, ",")(2) myWsName = Split(x, "!")(0) End If MsgBox myWsName & "!" & Range(x)(n).Address & ":" & Range(y)(n).Address Sheets(myWsName).Select Sheets(myWsName).Range(Range(x)(n), Range(y)(n)).Select End Sub

  • VBA 変数の指定について

    エクセル2010を使っている者です。 過去の質問を見ていると、以下の記述が見つかりました。 Sub swap() Dim w, x As Range, y As Range If Selection.Areas.Count <> 2 Then Exit Sub Set x = Selection.Areas(1) Set y = Selection.Areas(2) w = x.Formula x.Formula = y.Formula y.Formula = w End Sub 変数の指定のところで、x, yはRangeの型を指定していますが、 wはどのようになっているのでしょうか? 検索してみると、変数の型を書かないと自動でVariantとして扱われるように なっているとのことですが、この場合もwもVariant型になっているのでしょうか? また、このようにwを中途半端に書かずに Dim x As Range, y As Range とwを外して書いてしまってもwは変数として機能するのでしょうか? よろしくお願いいたします。

  • カットして隣のB列に順番にペーストするマクロ

    発注と納品の確認マクロを作成しました。 Sheet1の列を検索して、Sheet2にあればその数字のあるセルを赤くするのですが、 それを以下のように変更することは可能でしょうか? Sheet1の列を検索して、Sheet2にあれば、Sheet2上でその数字をカットして隣のB列に上から順番にペーストします。 宜しくお願いします。 Sub 発注と納品の確認マクロ() Dim Ws1 As Worksheet Dim Ws2 As Worksheet Dim myRange1 As Range Dim myRange2 As Range Dim c1 As Range Dim c2 As Range Dim myCt As Long Set Ws1 = Worksheets("Sheet1") Set Ws2 = Worksheets("Sheet2") Set myRange1 = Ws1.Range("A1", Ws1.Cells(Rows.Count, "A").End(xlUp)) Set myRange2 = Ws2.Range("A1", Ws2.Cells(Rows.Count, "A").End(xlUp)) For Each c1 In myRange1 myCt = 0 For Each c2 In myRange2 If c2.Value = c1.Value Then If myCt = 0 Then c2.Interior.ColorIndex = 3 Else c2.Interior.ColorIndex = 43 End If myCt = myCt + 1 End If Next c2 If myCt = 0 Then c1.Interior.ColorIndex = 6 Next c1 Set Ws1 = Nothing Set Ws2 = Nothing Set myRange1 = Nothing Set myRange2 = Nothing End Sub

  • EXCELマクロ、範囲選択はできたものの・・・

    こんにちは。 Wendy02さんはじめ、みなさんのお力をお借りして、 できあがりまじかのグラフですが、恥を承知で教えて ください。 教えてもらったマクロ Sub getMyRange3() Dim r As Range  With ActiveSheet.Range("A1").CurrentRegion    Set r = Cells(65536, .Cells(.Cells.Count).Column).End(xlUp)   Range("A1", r).Select  End With  Set r = Nothing End Sub ****************** ・データ範囲には0が存在する場合がある。 ・末尾データの0は範囲には入れない のことを考慮すると、期待の範囲がとれません。 オートフィルタでの処理も考えましたが、必要な 0までもフィルタされます。 ****************** masa_peeさんの作られたデータサンプルをお借りすると データ的には、    A  B  1 あ 13  2 い  0  3 う 60  4 え 52  5 お  0  6 か  0 というデータのなかで欲しい範囲は、A1からB4です

  • マクロ 抽出してコピー貼り付けしたい

     以下のような、サイトでコードをみつけました。今ひとつ、分からないことがあります。お教え下さいませんか。 やりたい元のデーターと抽出先について sheet1の元データーはA列&#65374;G列のデーターです。sheet1のA列・B列・D列・E列・G列だけを抽出して、sheet2に表示させたいのです。なお、sheet1には、関数が入っています。 以下はサイトからのものです。 実行結果(1列目と3列目を抽出) Sub 列抽出() Dim データ範囲 As Range Dim 抽出列 As Variant Dim i As Long Set データ範囲 = ActiveSheet.Range("A1").CurrentRegion  抽出列 = Array(1, 3)  Sheets.Add.Name = "抽出" For i = 0 To UBound(抽出列)  データ範囲.Columns(抽出列(i)).Copy Sheets("抽出").Range("A1").Offset(0, i) Next i End Sub

  • オートフィルタを操作するマクロについて

    いつもお世話になっております。 現在オートフィルタを操作するマクロを作成中ですが、うまく動作してくれず、悩んでおります。 「検索画面」シートのA1から文字で検索条件を入力し、その答えを「元データ」のシートでオートフィルタを使って導き出すことをしています。 私が作ったマクロは以下の通りです。 Sub フィルタオプション設定() Dim LastRow As Long, LastColumn As Long Dim myData As Range Dim myCriteria As Range Set myCriteria = Worksheets("検索画面").Range("A1").CurrentRegion Sheets("元データ").Select Selection.AutoFilter Field:=26, Criteria1:=myCriteria, Operator:=xlOr End Sub これですと、「~を含む」という答えがでないのと、複数設定しても最後に入力した文字しか検索をかけないのです。 結局のところ、 (1)複数に加え、 (2)「~を含む」という条件で、 (3)別シートにあるデータをオートフィルタによって操作する マクロをご教示ください! よろしくお願いいたします。

  • Excelマクロ オートフィルタ可視領域の特定部分をコピー

    何方か、回答をお願いします。 下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。 やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。? Sub フィルタ() Range("B1:C1").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=1e-6" Range("B1").CurrentRegion.Select On Error Resume Next Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select Selection.Copy Range("K15").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter End Sub