• ベストアンサー

セルの参照先を入力にて

こんにちは。スイマセンが、お願いします。 シート名"データ"を参照先にしたいのです。 アクティブなワークシートのRange("C4")に、 "=データ!C2"と入力したいのです。 セルのC4,C9,C14,・・・に、 各々 =データ!C2,=データ!C3,=データ!C4,・・・としたいです。 どのようにしたらいいのでしょう? まずは、少ない数を試そうと思いまして、以下のようなものを試しました。 For i = 4 To 34 Step 5 Cells(i, 3).Select For j = 2 To 7 Step 1 ActiveCell.FormulaR1C1 = "=データ!C" & "j" Next Next これでは、当然、駄目です。 ActiveCell.FormulaR1C1 = "=データ!C" & j ActiveCell.FormulaR1C1 = "=データ!C" & CStr(j) これも、予想通り駄目でした。 どうぞ、お教えください。お願いします。

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

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

こんにちは。 これでどうでしょう。 Option Explicit Sub test() Dim i As Long Dim j As Long j = 2 For i = 4 To 34 Step 5  Cells(i, 3).Formula = "=データ!C" & j  j = j + 1 Next End Sub

yama3desu
質問者

お礼

ありがとうございます。 希望通りに、入力できています。嬉しい!です。 Option Explicit 以下をそのまま、標準モジュールに貼り付けて、 使用しようと思いますが、 良いのでしょうか?お願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.3

はははっはっと。VBAで書いちゃいました。 Sub TEST() Dim Wa As Excel.Worksheet Dim i As Long Dim j As Long Set Wa = Worksheets("データ") j = 0 For i = 5 To 15 Step 5 j = j + 1 Wa.Cells(i, 3) = Wa.Cells(j, 3) Next End Sub ちなみにPublicで変数宣言をすると、グローバル変数でどこからでも、この変数名で参照できるようになります。 Privateというのは、ローカル関数ですよ。という事です。 単純にSubで宣言すると、Pblic Sub扱いになります。

yama3desu
質問者

お礼

ありがとうございました。 Privateとか、ローカル関数とかが、 まだ、よく分かっていないもので、スイマセン。 ありがとうございました。大変勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.2

Public Wa As Excel.Worksheet Private Sub TEST() Dim i As Long Dim j As Long Set Wa = Worksheets("データ") j = 0 For i = 5 To 15 Step 5 j = j + 1 Wa.Cells(i, 3) = Wa.Cells(j, 3) Next End Sub 細かいところは、モデファイしてお使いください。

yama3desu
質問者

お礼

ありがとうございます。 しかし、 Public Wa As Excel.Worksheet と、 Private Sub を理解できません。 そのまま、標準モジュールに、貼り付けても、 実行できません。クラスモジュールを挿入して 貼り付けたり、分からないのでやりましたが、 駄目です。お構い無ければ、お教えください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ActiveCell.FormulaR1C1の変数

    ActiveCell.FormulaR1C1 に変数を用いたいのですがうまくいきません。 For i=0 To 5 ActiveCell.FormulaR1C1 = "=-R["&n&"]C[-2]-100" next i としたのですがどこが間違っているのでしょうか? R1の1を変数にしたいです。よろしくお願いします。

  • excel2007マクロに関しまして

    excel2007マクロに関して不明な点があるので教えて頂きたいです。 シートが50枚ありそれぞれのシートのN列4~15行に対し そのシートのC列4~15行の値を60倍したものを記載したいのですが 下記入力内容中の Range("N " & j ).Select のところでRange メソッドの失敗が生じてしまいます。 その他にも不備があればご指摘頂きたいです。 宜しくお願いします。 Sub Macro6() ' ' Macro6 Macro ' Dim i, j As Integer For i = 1 To 50 With Sheets("ds1_" & i) Range("N3").Select ActiveCell.FormulaR1C1 = "Q(cum/m)" For j = 4 To 15 Range("N " & j ).Select ActiveCell.FormulaR1C1 = "=RC[-11]*60" Next j End With Next i End Sub

  • vb6で覚えたことがvb2010で活かせれない。。

    グラフの目盛表示をしたくて、 vb2010で下記のコードを入力したのですが、何回やってもエラーがでます。 どなたか教えてください。 --------------------------------- J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 100 + I strB = CStr(0.2 - (2 / 5) * J * 0.1) Print strB J = J + 1 Next J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 300 + I strB = CStr(0 - (2 / 5) * J * 0.1) Print strB J = J + 1 Next -------------------------------------

  • 縦に並んだシートのセルデーターを他のシートに1行間隔で転記する

    よろしくお願いします。 シート【あ】のデーターを、シート【い】のようにしたいのですが 方法を、教えてください。 シートあ     A   B   C   D 1        55 2        66 3        77 4 5      ↓ ↓ シート【い】     A   B   C   D 1            55 2     3            66 4 5            77 Private Sub CommandButton2_Click() Range("C1:C124").ClearContents For i = 1 To 124 Step 2 For j = 1 To 124 Cells(i, "C").Value = Cells(i, "B").Value Next Next End Sub と、してみたのですが、だめでした。

  • Excel VBA マクロ処理 リンク先参照変更方法

    Excel VBA マクロ処理 リンク先参照変更方法で質問です。 データがあるsheet名を『データ』、 平均を集計するsheet名を『平均集計』とします。 行いたい処理は 『データ』にある【 】内の5コのデータの平均値をまとめたい。 『平均集計』に平均値を集計してまとめる。 5コデータの平均値を既に参照指定済のsheetを使用します。 ***『データ』詳細********** 縦軸【1×5】×25項目 = 130行 横軸に13列 A~M列 ************************** ■教えて欲しい処理部分はここ! 『平均集計』リンク参照先を一気に変更させたい。 ActiveCell.FormulaR1C1 = "=AVERAGE('リンク参照'!R[★]C:R[★]C)" ↑上記のリンク参照先を一気に変更させる方法はありますでしょうか? 例> ActiveCell.FormulaR1C1 = "=AVERAGE('リンク参照先変更'!R[★]C:R[★]C)" のように…。 あと補足で、教えて欲しいのですが… ★データが追加された場合 例>5 → 7 この時行う処理方法がよくわかりません…。 単発だと ActiveCell.FormulaR1C1 = "=AVERAGE('リンク参照先変更'!R[1]C:R[7]C)" で可能ですが… ↓ 複数になると…  x=1 y=7 FOR i=1 to 25 ActiveCell.FormulaR1C1 = "=AVERAGE('リンク参照先変更'!R[x]C:R[y]C)" x=y+1 y=y*(i+1) NEXT …エラーになりました。 追加処理の場合、どのような方法がありますでしょうか? 以上、アドバイスよろしくお願い致しますm(__)m

  • セル内の値を消したら参照先セルを消す

    Excelのボタンクリックで下記コードにより上表のイニシャルがセル"B11:E13"に入力されるが下表の数字"B15"を消した場合、再度クリックしても入力されたイニシャルが消えないどんなコード入力をすれば良いのかどなたか解る方よろしくお願いします。 Sub 入力() Dim i As Long, j As Long On Error Resume Next For j = 2 To 5 For i = 1 To 3 Cells(i + 10, j) = WorksheetFunction.Index(Range("A1:A9"), WorksheetFunction.Match _ (i, Range(Cells(15, j), Cells(23, j)), False)) Next i Next j End Sub

  • エクセルマクロ セルの貼り付けについて

    マクロ初心者でわからないことばかりで困っております。 For i = 1 To 721 Step 80 Sheets("Sheet2").Activate Range("G3").Select ActiveCell.FormulaR1C1 = i Range("A1:D80").Select   Selection.Copy Sheets("Sheet3").Activate このあとにコピーしたもの「Range("A1:D80").Select」をセルに貼り付ける時に一回ごとに80行ずつずらして貼り付けたいのですが、そのような場合は どのようにRange指定して貼り付ければよろしいのですか? sheet2で演算した結果をsheet3のセルA1からA721まで貼り付けたいのです。一回の演算で80行まで計算されます。 わかりずらくて申し訳ありません。

  • 目盛表示ができない(vb2010)

    下記のグラフのように、Y軸に目盛表示をしたいのですが、うまくできません。 PictureBoxにLineは表示できるのですが、目盛が表示できません。 どなたかお教え願います。 下記のコードでは、目盛表示ができないのでしょうか。    '目盛表示 Dim J As Integer, CurrentY As Integer, CurrentX As Integer Dim strB As String J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 100 + I strB = CStr(0.2 - (2 / 5) * J * 0.1) J = J + 1 Next J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 300 + I strB = CStr(0 - (2 / 5) * J * 0.1) J = J + 1 Next

  • loop終了後のセルの一個右から同様のloopを行う方法

    ・loop終了後のセルの一個右から同様のloopのプログラムを組むのが目的です。 ・データはA列にランダムに数字が入っているものとします。 ・条件式としては基準値より小さな数字が一個下のセルにあったら↓を表示して、さらに下に行くという風にして、基準よりも多くなったところでloopがストップする設定です。 ・困っているところをうまく表現できてないかも知れませんが、よろしくお願いします。 --------------------------- Sub 比較() Dim i As Integer Dim j As Integer Cells(1, 2).Select ActiveCell.FormulaR1C1 = "=IF(RC1>R1C1,""→"",""↓"")" i = 1 Do While Cells(i, 2).Value <> "" If Cells(i, 2).Value = "↓" Then Cells(1 + i, 2).Select ActiveCell.FormulaR1C1 = "=IF(RC1>R1C1,""→"",""↓"")" End If i = i + 1 Loop Cells(i - 1, 3).Select ActiveCell.FormulaR1C1 = "=IF(RC1>R" & i - 1 & "C1,""→"",""↓"")" j = 1 Do While Cells(i - 2 + j, 3).Value <> "" If Cells(i - 2 + j, 3).Value = "↓" Then Cells(i - 1 + j, 3).Select ActiveCell.FormulaR1C1 = "=IF(RC1>R" & i - 1 & "C1,""→"",""↓"")" End If j = j + 1 Loop End Sub

  • 同期の並び替えで、規則的ですが、数が多くて処理に困っています。何かいい方法はないでしょうか?

    同期の並び替えで、規則的ですが、数が多くて処理に困っています。何かいい方法はないでしょうか? 一通り最後までやったのですが、ものすごい数になってしまいました。 下記 Sub Macro1() Sheets("sheet2").Select 'sheet1のA君のデータ(C列の10,14,18,22~90)をsheet2(C列)に同期 Range("C8").Select ActiveCell.FormulaR1C1 = "=sheet1!R[2]C" Range("C9").Select ActiveCell.FormulaR1C1 = "=sheet1!R[5]C" Range("C10").Select ActiveCell.FormulaR1C1 = "=sheet1!R[8]C"      ・      ・      ・   Range("C31").Select ActiveCell.FormulaR1C1 = "=sheet1!R[71]C" 'sheet1のB君のデータ(D列の10,14,18,22~90)をsheet2(E列)に同期 Range("E8").Select ActiveCell.FormulaR1C1 = "=sheet1!R[2]C[-1]" Range("E9").Select ActiveCell.FormulaR1C1 = "=sheet1!R[5]C[-1]" Range("E10").Select ActiveCell.FormulaR1C1 = "=sheet1!R[8]C[-1]"      ・      ・      ・   Range("C31").Select ActiveCell.FormulaR1C1 = "=sheet1!R[71]C[-1]" 'sheet1のC君のデータ(E列の10,14,18,22~90)をsheet2(G列)に同期 Range("G8").Select ActiveCell.FormulaR1C1 = "=sheet1!R[2]C[-2]" Range("G9").Select ActiveCell.FormulaR1C1 = "=sheet1!R[5]C[-2]" Range("G10").Select ActiveCell.FormulaR1C1 = "=sheet1!R[8]C[-2]"      ・      ・      ・   Range("G31").Select ActiveCell.FormulaR1C1 = "=sheet1!R[71]C[-2]"       と続き 最終的には 'sheet1のV君のデータ(X列の10,14,18,22~90)をsheet2(AS列)に同期   Range("AS8").Select    ActiveCell.FormulaR1C1 = "=集計関連!R[2]C[-21]"      ・      ・      ・   Range("AS31").Select    ActiveCell.FormulaR1C1 = "=集計関連!R[71]C[-21]" End Sub と一応規則的に並び替えています。…が、途方もない数になってしまうのですが、何か省略したり…というような方法はないでしょうか? よろしくお願いいたします。

専門家に質問してみよう