• ベストアンサー

VBAを使ってシート上に関数式を入れたいのですが・・・

シート上の1つのセル内に次のような関数式を入れたいと思っています。 =RSQ(F2:F1000),(G2:F1000) F2の2、及びF1000の1000の部分は変数で、それぞれx,yとしています。 VBAのコードで Cells(68, y)="=RSQ(F" & x & ":F" & y & "),(G" & x & ":G" & y & ")" としたらエラーが出てしまいました。 正しい記述を教えてください。 (&の使い方がおかしいのでは、と思っているのですが・・・) よろしくお願いします。

noname#128465
noname#128465

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

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

#01です ああ、すみません。x、yは変数ですね。 Cells(68, y).FormulaR1C1 = "=RSQ(F" & x & ":F" & y & "),(G" & x & ":F" & y & ")" になります。式を入れる場合はvalueではなくformula(R1C1)プロパティになります

noname#128465
質問者

お礼

問題解決しました。ありがとうございました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

Cells(68, 10).FormulaLocal = "=RSQ(F" & x & ":F" & y & ",G" & x & ":G" & y & ")" でどうでしょう。 他の方が指摘されていない間違いで Cells(68,y) のy は、列数ですからこれを1000とすることはできません。

noname#128465
質問者

お礼

問題解決しました。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

#3のおっしゃるように =RSQ(F2:F1000,G2:G1000) のはずです。 Cells(68, y).FormulaLocal ="=RSQ(G" & x & ":F" & y & ",G" & x & ":F" & y & ")"""

noname#128465
質問者

お礼

問題解決しました。ありがとうございました。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

   RSQ(F2:F1000),(G2:F1000) これ  RSQ( F2:F1000, G2:G1000 ) ではないんですか?  

noname#128465
質問者

お礼

問題解決しました。ありがとうございました。

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

Cells(68, y).FormulaR1C1 = "=RSQ(F2:F1000),(G2:F1000)" とすればOKです

関連するQ&A

  • 【エクセルVBA】「インデックスが有効範囲にありません」というエラーがでます

    こんにちは。VBA初心者ですが、下記コードを実行すると エラーが出てしまいました。 シート(シート1)のセルから別シート(シート2)のセルに 値のみコピーするVBAを組んでいます。 適宜、シート1に入力したものを読みこませていきたいので 変数を使用しています。 ------------------------------------------------------------- Sub セルのコピー() Dim X As Integer X = 3 Y = 2 Do While Cells(X, "A").Value <> "" Sheets("シート1").Cells(X, "A").Copy Sheets("シート2").Activate Sheets("シート2").Cells(Y, "F").PasteSpecial _ Paste:=xlPasteValues ⇒エラー対象 Application.CutCopyMode = False X = X + 1 Y = Y + 1 Loop End Sub ------------------------------------------------------------ つまり、シート1のA3セルを先頭にA4,A5,A6・・・と続くセルの値 をシート2のF2を先頭としたセル(以下、F3,F4・・・)に値のみコピー していきたいのですが。。 実行すると「インデックスが有効範囲にありません」というエラーが でます。デバック対象は上記、「⇒エラー対象」の構文です。 変数の設定の仕方がおかしいのでしょうか。。 ご教示のほどよろしくお願いいたします。

  • ユーザー定義関数を作りVBAで記述

    aaaと言う、ユーザー定義関数を作りVBAで記述して使う場合はどのように記述すればよいでしょうか。 通常のワークシート関数であれば、 Cells(1, 1) = Application.Sum(Range("G1:G100")) などとなりますが、 Cells(1, 1) = Application.aaa(Range("G1:G100")) とするとエラーになります。 初歩的な質問だとは思いますが、よろしくお願いします。

  • EXCEL97VBAにおける、TREND(ワークシート関数)の配列入力は?

    EXCEL97のワークシートでファイルを作成したのですが、データ数が膨大で動かない(計算終了まで時間がかかりすぎる)ため、ワークシート関数の代わりに、VBAのSub~End Subを作成し、計算結果(式ではなく数値)のみをセルに貼り付ける作業を行っています。 ワークシート関数のTRENDを使用しているのですが、これをVBA上で使用するためにどう入力すれば良いかわかりませんので、ご教授いただきたいと思います。 myCELL=Application.TREND(既知のy, 既知のx, 新しいx, 定数) でmyCELLを計算させたいのですが、 配列の既知のyおよび既知のxがどのように入力すれば良いか判りません。 この数値をセル上において、例えばA1:A10、B1:B10という形にすることは できますが、求めていますのは X1,X2~X10 Y1,Y2~Y10の変数がVBAのプログラム上にある場合の配列の入力 (数値取込?)を教えていただきたいと思います。 TREND関数はVBAでも使用できる関数となっていますが、 私の求めるやり方は不可能である場合もその旨をお教えください。 よろしくお願い申し上げます。

  • 関数をVBAで簡素化する

    よろしくお願いします シート枚数22枚 各シート セルG11からG71まで 各シートの各行にこの関数を入力するのは労を要します。 また、VBAに下のように1ツづつ入力するのも同じです。 Range("G11").Value="=IF(E11+F11=0,0,G10+E11-F11)"          ↓ Range("G71").Value="=IF(E71+F71=0,0,G70+E71-F71)" VBAで簡素化ができないでしょうか

  • Excel-VBA でSheet1という記述はActiveSheetに書き換えた方が良いか?

    以下は知人に作ってもらったマクロで、100×100セルという範囲の 各セル内の値に応じて色を塗り分けるものです。 素人ながらふと気になった点として、3カ所ほど「Sheet1」という 記述がありますが、Sheet1をそのままコピーしたシート名 (例:Sheet1のコピー)などで実行するとエラーになる (或いは'Sheet1のコピー'上には塗ってもらえない) のではないでしょうか? なので、Sheet1を「ActiveSheet」などの記述に書き換えた方が (必ずSheet1上で実行せずともよくなるので)汎用性が高まると 思うのですが、わたしの予想が正しければ、具体的にはどのように 書き換えればよいでしょうか? 単純にSheet1をActiveSheetに書き換えてよいですか? Sub MyColor()   Do Until Y = 100   Do Until X = 100   mapcol = Sheet1.Cells(1 + X, 1 + Y)   Select Case mapcol   Case 1 '赤     Sheet1.Cells(1 + X, 1 + Y).Interior.ColorIndex = 3   Case 2 '黄     Sheet1.Cells(1 + X, 1 + Y).Interior.ColorIndex = 6   X = X + 1   Loop   X = 0   Y = Y + 1   Loop End Sub

  • VBA関数_オブジェクトが指定できない

    Excel_VBAで WorksheetFunction.Sum (Range(Cells(2, 14), Cells(iCount, 14))) 上記のコードに ActiveSheet を記述(ワークシートを指定)したいのですが エラーになってしまい、何処にどのように記述してよいか ご教授よろしくお願い致します。

  • VBA初心者です。

    VBA初心者です。 Excel 2010のVBAで、 ワークシートのSheet1のオブジェクトモジュールに 他のシートから別のシートにコピー&ペーストをしたいと思い、 以下のプログラムの記述をすると、 アプリケーション定義またはオブジェクトの定義エラーとなってしまいます。 Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8)).Copy Destination:=Worksheets("Sheet3").Cells(3, 1) (「d」は変数です。セルの範囲指定は、実際に記述するときは 範囲が広範になるので、行数列数で把握できるようにCellsを使っています) エラーになる理由と解決法をご教授いただければと思います。

  • Excel ワークシート関数をVBAで使用したい

    お世話になります。 Excelでワークシート関数をVBAで使用したいのですが、うまくいきませんでした。 関数ですと「ISERROR(FIND(V$10,R$11))=FALSE」のような式をVBA上で使用したいと思い、以下のようにコードを書いてみましたが If Application.WorksheetFunction.IsError(Application.WorksheetFunction.Find(Cells(i, j), Cells(i, 18))) = False Then Cells(i, j).Select End If 「実行時エラー'1004' WorksheetFunction クラスのFindプロパティを取得できません」となります。 入れ子が問題なのでしょうか。 よろしくお願いします。

  • VBA ワークシート関数のエラー

    シートに数式を入れていたものを、VBAで値のみ入力しようと考えています。 そこで、.Cells(1,1) = WorksheetFunction.数式といった形のメソッドを試しています。 しかし、複雑な数式を記述するとエラーが出てしまいます。 成功 (iferrorというワークシート関数が1つ) Debug.Print WorksheetFunction.IfError(1 / .Cells(1, 5) + 1 / .Cells(1, 6) + 1 / .Cells(1, 7) - 1, "P") 失敗(ワークシート関数のifとcountifなど複数のものが数式に混入) Debug.Print WorksheetFunction.If(CountIf(Range("C17:D49"), Range("C29")) > 5, Range("C29"), Range("D29")) Countifの場所でエラーになります。このcountifを使えるようにするためには、どうすればよいのでしょうか? WorksheetFunction.if(WorksheetFunction.Countif(、、、、という書き方はダメでした。 数式が汚くてすみません。 宜しくお願いいたします。

  • EXCEL VBA で データを集計したい。

    よろしくお願いします。 添付の資料の通り、データを格納しているシートがあります。 項目は、  ・処理日  ・科目  ・D列  ・E列  ・F列 とあったとし、抽出条件は、  ・処理日の範囲指定  ・科目の指定 としたいと思っています。 VBAで処理したいのですが、まずはEXCEL関数のDSUMを使用し、添付の通り指定して、 抽出されることを確認しました。 これと同様の抽出をVBAで行いたく、VBAでワークシート関数を使用するために、  Dim x As Variant x = Application.WorksheetFunction.DSum(Range(Cells(3, "A"), Cells(15, "E")), "D列", Range(Cells(3, "O"), Cells(4, "Q"))) とし、正しく値を取得することができました。 ですが、条件を指定する部分を、セルで指定するのではなく、例えば  "処理日" >= 20151001 and "処理日" <= 20151002 and "科目" = "01" のように、式をVBAで生成して作成したいのですが、方法はありませんでしょうか? ACCESSのDSUM関数のような記述ができませんでしょうか? お手数をおかけします、よろしくお願いいたします。

専門家に質問してみよう