• ベストアンサー

VBA:変数を使用したオートフィルタについて

エクセルVBAについて質問させてください。 A1セルにの値をB1、C1の方向にオートフィルを行いたいと考えています。 オートフィルをするセルの個数を変数で指定したい場合、どのように記述すればよろしいでしょうか? (変数の値が5なら、B1、C1、D1、E1までオートフィルというような感じです。)

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 オートフィルしたいセルをアクティブにして(質問文ではA1セルをアクティブにして)↓のマクロを実行してみてください。 Sub test() Dim i, j, k As Long k = InputBox("オーフィルする列数を入力") - 1 i = Selection.Row j = Selection.Column Selection.AutoFill Destination:=Range(Cells(i, j), Cells(i, j + k)) End Sub こういうコトですかね?m(_ _)m

reoreo111
質問者

お礼

ありがとうございました。 やりたいことが実現でき、解決しました。

その他の回答 (4)

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

標題の>オートフィルタ、はデータを選択する仕組み、だ。 一方>オートフィルはセルに値を入れるやり方。 多分この質問は後者だろう。十分注意して質問を書いてもらわないと、回答者に迷惑をかけるよ。 ーーー もしオートフィルで在れば、マクロの記録を採って考えましたか。初心者はそこから考えるべきだ。 Sub Macro4() Range("A1").Select Selection.AutoFill Destination:=Range("A1:D1"), Type:=xlFillDefault Range("A1:D1").Select End Sub となる。このD1を指定した者に、変化させるコードを考える。 Sub Macro5() 'Range("A1").Select x = InputBox("列数=") r = Selection.Row: c = Selection.Column Selection.AutoFill Destination:=Range(Cells(r, c), Cells(r, c + x - 1)), Type:=xlFillDefault End Sub ーーー 操作 元になるデータを入力しておいて、そのセルを選択 プログラム実行 列数を入力 結果 列数(元になるセルも含めて)列数分オートフィルされる。

reoreo111
質問者

お礼

ありがとうございます。 次からはマクロの記録をとってから質問したいと思います。

回答No.4

No.1です。 よくよく質問を読めばオートフィルと書いてある。。。 オートフィルならNo.2さんが正解ですね。 No.1は忘れて下さい。

reoreo111
質問者

お礼

紛らわしいことをしてしまってすいません。 実はオートフィルタも必要だったので、参考にさせていただきます。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! 投稿した後に気づいたのですが・・・ 「オートフィルタ」をご希望なら前回の投稿は無視してください。 「オートフィル」のコードを投稿していました。m(_ _)m

回答No.1

例えば、以下のようになります。 Sub Macro1()   Dim i As Long   i = Cells(1, 1)   Range(Cells(1, 1), Cells(1, i)).AutoFilter End Sub 以上

関連するQ&A

  • オートフィルマクロで作り、パラメータを変数にす方法

    EXCEL2007にて textBoxに入力された値を オートフィルのパラメータに指定したいのですが、 どのように記述すれば良いかわかりません。 Dim a As Integer a = TextBox.Text この変数aをオートフィルのパラメータにするにはどうすれ良いでしょうか? TextBoxに"10"と入力した場合、 A1:A10までオートフィルするためのマクロです。 ..........|A|B|C .....1..|10 .....2..|10 .....3..|10 .....4..|  .....5..| .....6..| .....7..| 初心者のため説明不足で申し訳ないのですが、 よろしくお願いいたします。

  • Excel縦方向オートフィル時に横方向変化させたい

    Excelの数式で、例えば、=A1の数式がセル内にあるとして、そのセルを縦方向にオートフィルした時、 =A1 =A2 =A3  •  •  • になりますが、それを =A1 =B1 =C1  •  •  • の参照になるようにしたいのです。 つまり、縦方向オートフィルで、横方向のオートフィルが効いたように値が参照されるようにさせたいということです。 セル関数を駆使すれば出来そうなのですが、可能でしょうか? どなたかご教授いただけますと幸いです。 よろしくお願い致します。

  • エクセルの文字列中の指定した位置の文字列の置き換え(REPLACE)。

    エクセルの文字列中の指定した位置の文字列の置き換え(REPLACE)。 エクセルのセルA1に 「A123B1234X9876C123DD」と入力されています。 これを 「A123-B123X9876-C123-DD」としたいです。 現在 ・B1のセルに=REPLACE(A1,5,0,"-") ・C1のセルに=REPLACE(B1,15,0,"-") ・D1のセルに=REPLACE(C1,20,0,"-") と入れて、D1にできた値の 「A123-B123X9876-C123-DD」 をコピーして E1のセルに「形式を選択して貼り付け」「値」で貼り付けして B1~D1を削除して ・A1のセルには元の「A123B123X9876C123DD」 ・B1のセルには編集後の「A123-B123X9876-C123-DD」 が表示されるようにしています。 このA列が100行もあるとうんざりです。 式をオートフィルでコピーしていくのですが  ・B1に式を入れてオートフィルでB100までコピー  ・C1に式を入れてオートフィルでC100までコピー  ・D1に式を入れてオートフィルでD100までコピー  ・D1~D100をコピーしてE1~E100に「形式を選択して貼り付け」「値」で貼り付け  ・B,C,D列を列削除  3回は式を入れないといけないです。一発で編集する方法はありますでしょうか?

  • エクセルで、オートフィルで、~個おきに参照するなどの数式を簡単に入力する方法について

    エクセルのオートフィルの仕方で、分からない点があり、お教え下さい。例えば、A1からZ1までのセルに、ランダムな数値がはいっているとします。A2に”=A1”、B2に”=C1”、C2に”=E1”、D2に”=G1”などのセル参照の数式をいれるときは、A2に”=A1”と入力した後、オートフィルのように簡単に連続して1個おきの次のセル参照(B2に”=C1”、C2に”=E1”・・・)を入力する方法はあるのでしょうか。つまり”~個おき”のセル参照を連続入力(オートフィル)する方法をお教えいただけないでしょうか。宜しくお願いします。

  • excelで自動計算

    excelで九九の早見表のようなものを作りたいのですが・・・ ___A__B__C__D 1_____1__2__3 2__1__1__2__3 3__2__2__4__6 4__3__3__6__9 B2のセルには、A2*B1 C2のセルには、A2*C1 D2のセルには、A2*D1 B3のセルには、A3*B1 ・・・といった感じの表を作りたいのですが。 オートフィルを使って(又は自動で)さくっと簡単に作ることは可能でしょうか? B2=A2*$B$1 とやれば、縦方向にはオートフィルで1列だけうまくいくのですが、横方向にはうまくいってくれません。 2行目を全部手入力でやって、縦方向にオートフィルで出来そうなんですが、 100 X 100 以上の表を作りたいので途中でやる気がなくなります。 何かいい方法があれば、教えてください。 よろしくお願いいたします。

  • 【Excel 関数】 INDIRECT関数のオートフィルについて

    INDIRECT関数のオートフィルについて、昨日より色々調べましたが 解決できませんでしたので質問させて頂きます。 宜しくお願いします。 【状況】 ・Bookの構成は 一番左に「集計」シート、その横に「Sheet1」「Sheet2」・・・  と続いており、それぞれ数字のデータが入っています。 ・「集計」シートには、  「A1」セルに シート名を入力する欄、  「B1」セルに「=INDIRECT($A$1&"!B1")」  とデータを反映させる式が入っています。 この状態で、「B1」セルを、 横方向(横)にオートフィルすると ・・・ 「C1」「D1」「E1」 縦方向(下)にオートフィルすると ・・・ 「B2」「B3」「B4」 とそれぞれのデータを反映させるには、元の 「=INDIRECT($A$1&"!B1")」 をどのように変えればよろしいでしょうか? ご教示頂けましたら幸いです。 宜しくお願い致します。

  • オートフィルタ後の、マクロでの値の参照に関して

    オートフィルタ後の、マクロでの値の参照に関して 下記を悩んでいます。教えて頂ければ幸いです。 マクロで、あるデーター表から、オートフィルタを使用し、必要なデーターを 抽出し、マクロ内に戻し、その後の計算で使用したいと考えています。 A列、B列、C列にそれぞれ、検索条件を指定し、オートフィルタ後、下記のような状態になります。 参照したい値は、D列になります。 下記のような例では、2.5と2.7の値をマクロ内に戻したいです。 (例:オートフィルタ後) 1行  A▼  B▼  C▼  D 16行 **  **   **  2.5   20行 **  **   **  2.7 *2~15行目は見えなくなっています。 *17~19行目は見えなくなっています。 セルを参照し、マクロ内に戻すには、どのような構文(マクロ)の記述が必要でしょうか? 【備考】 ・上記の例では、セルはD16、D20となりますが、抽出条件によっては、行番号が変わってしまいます。 ・抽出後のD列のデーター数は、常に2つです。 よろしくお願いします。

  • オートフィルをVBAで実行したいのです。

    オートフィルをVBAで実行したいのです。 表(例:B2:E○)があります。○は毎回数字が変化します。 (商品仕入があれば”行”が増え、売上れば減るため) その表のA列に、A2から列方向に1から連番の数値をオートフィルで最終行まで数値を入れたいのですが、コードを教えていただけませんでしょうか? 宜しくお願いします。

  • EVCEL VBA での最小値の検索

    EVCEL VBAで飛び飛びの複数の指定したセル群から最小の値を持つセルのアドレスを抽出する記述を教えてください。 たとえば、あらかじめ指定したA2とB3とE5のセルの値のうち最小の値を持つセルの値とアドレスを取得する記述を教えてください。 お願いします。

  • Excel2007のオートフィルタ機能について

    対象ソフト:Excel2007 オートフィルタで絞ったデータを「数値と値のクリア」でクリアすると、絞ったデータのみがクリアされるはずが、絞ってしないデータまでクリアされてしまうことがあります。 見つけたのは以下のパターンです。  A B C D E F 1  ● 2  ×  3 ● 【現象が出るケース】 1.先頭行にオートフィルタを設定 2.オートフィルタでB列の●を選択 3.●のセルを選択し、「数値と値のクリア」を実行 ⇒B1~B3までのデータがすべて消えてしまいます。 【現象が出ないケース】 1.先頭行にオートフィルタを設定 2.オートフィルタでB列の×を選択、個数を確認します 3.オートフィルタでB列の●を選択 4.●のセルを選択し、「数値と値のクリア」を実行 ⇒B2の×は残っています。 この現象は故意的なのでしょうか? それともバグなのでしょうか? どちらにしても、パターンを覚えておかないとデータを操作する際に、正確なリストを作成できずに困っております。 解決法や良い対処策があれば教えてください。

専門家に質問してみよう