• ベストアンサー

EXCELマクロ:列の指定を数値で表現できますか?

Excel2000を使用しております EXCELの任意列の挿入、およびオートフィルを行なう関数を作成しようと思ったのですが、 オートフィルのメソッドの場合、 Columns("D:D").AutoFill Destination:=Columns("D:E"), Type:=xlFillDefault と、列を指定する場合、英字で指定しなければならないようで、 これを今回作成する関数の引数で渡された数値(2列目を3~10列目までオートフィル) で行ないたいと思っております。 列を数値で表現するにはどのようにすればよいのでしょうか。 ご回答をよろしくお願いいたします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

>単体列のオートフィルとの場合(同一データがフィルされる)と、当該結果の違いはなぜ起こるのでしょうか 引数Typeに「xlFillDefault」を指定すると、状況によって違ってくるので、ご希望の動作に合わせて、引数Typeの値を設定しましょう。 引数Typeについては、ヘルプにはいまいち詳細に説明されていません。 なので、マクロ記録で、オートフィルコピーを右クリックで行った時に表示されるショートカットメニューをいろいろ選択して確認して下さい。

その他の回答 (5)

  • YKchiko
  • ベストアンサー率26% (4/15)
回答No.6

 お返事遅くなってごめんなさいYKchikoです それからもうひとつごめんなさい。基本も基本の行と列を勘違いしてました。。。列の数値での指定、他のみなさんの回答で大丈夫ですよね???

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

列も数字で指定できるのではないでしょうか。 Sub test01() Columns(2).Select End Sub Sub test02() Range(Columns(2), Columns(3)).Select End Sub がどちらも目的を達しましたが。 以下はダメでした。 Sub test03() Columns("2:3").Select End Sub Sub test04() ' Columns(2:3).Select End Sub Sub test05() Columns("2,3").Select End Sub Sub test06() Columns(2, 3).Select End Sub

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 例えばこんな感じとか。 tempCol = 3 Columns(2).AutoFill Destination:=Columns(2).Resize(, tempCol), _         Type:=xlFillDefault ちなみに、tempColはコピー範囲の幅(コピー元を含む)を表していて、上式の場合は、B列をD列までコピーすることになります。 あとは、この幅の指定方法を工夫して下さい。

o_w_nakazaki
質問者

お礼

ご回答ありがとうございます。 AutoFillが行なわれました。 1点疑問なのですが、 2列目にデータをいれて いただいたサンプルを実行した際に フィルされるデータが連続データ(1,2,3...) となっておりましたが、 単体列のオートフィルとの場合(同一データがフィルされる)と、当該結果の違いはなぜ起こるのでしょうか

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

AB列を指定するには、次の四つの方法があります。   Columns("A:B").Select Range(Cells(1, "A"), Cells(65536, "B")).Select Range(Cells(1, 1), Cells(65536, 2)).Select Range(Columns(1), Columns(2)).Select  でわ

  • YKchiko
  • ベストアンサー率26% (4/15)
回答No.1

 列を指定した場合は、数字の前に$をつければいいですよ

o_w_nakazaki
質問者

お礼

ご回答ありがとうございます。 ご指示いただいた例にならい、列の挿入を行なおうとしたのですが 「アプリケーション定義またはオブジェクト定義のエラーです」 というダイアログが表示されてしまいます。 エラーが表示されるのは以下の文です。 Columns("$2:$2").AutoFill Destination:=Columns("$2:$10"), Type:=xlFillDefault 行挿入ではうまくいくのですが、、、 Rows("$2:$2").AutoFill Destination:=Rows("$2:$10"), Type:=xlFillDefault

関連するQ&A

  • ExcelVBAでのオートフィルの使い方

    Excel2003です。 Bセルに入っている値をHセルまで右方向にオートフィルするマクロを組んでいるのですが、うまく動きません。 Bセルの最終行は変動し、オートフィルはBセルの最終行と最終行の1つ手前の2つ分をオートフィルしたいのです。 Range("B1").End(xlDown).Offset(-1, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault Range("B1").End(xlDown).Offset(0, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault これで、オートフィルしようと思っていたのですが、 Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault この式の実行で、 実行時エラー'1004' RangeクラスのAutoFillメソッドが失敗しました と、出てしまいます。   Selection.AutoFill Destination:=Range("B23:H23"), Type:=xlFillDefault こういうマクロなら動くので、AutoFillの後に明確な範囲指定をしていないせいなのでしょうか? 最終行が変動してしまう為、このような明確な範囲指定をする事ができません。 いい解決方法はないでしょうか?

  • エクセル Rank関数をマクロで

    こんにちは いつもお世話になっています。 Rank関数を作ることが多いのでマクロを作ることにしました。 例えば、C3からc23まで数字が入っています。c3-c23を選択した状態でマクロを動かしたいです。 実際は、特定列の一列の選択されたセルを対象にしたいです。 D列には別のデータが入っているのでC列とD列の間に新規に列を挿入し、新規のD3-D23にRankをいれます。つまり、選択セルの右側に新規の列を挿入したいです。 引数の数値はD3にはC3、D4にはC4…D23にはC23。参照は選択セルのC3からC23。順序は降順です。 一応、マクロ記録してみましたが Sub Macro1() ' ' Macro1 Macro ' Columns("D:D").Select Selection.Insert Shift:=xlToRight Range("D3").Select ActiveCell.FormulaR1C1 = "=RANK(RC3,R3C3:R23C3)" Selection.AutoFill Destination:=Range("D3:D23"), Type:=xlFillDefault Range("D3:D23").Select End Sub よろしくお願いします。

  • Excel マクロ 最終セルが毎回違う場合

    マクロ初心者です。 自動記録でマクロを作りました。 最終行が毎回違うので、「コピー(オートフィル)をA列の最終行にあわせてする」と作りたいです。 自動記録ではJ71までコピーになっていますが、J71をA列の最終行にしたいです。 よろしくお願いします。 Range("G3:J3").Select Selection.AutoFill Destination:=Range("G3:J71"), Type:=xlFillDefault Range("G3:J71").Select

  • エクセル マクロ オートフィルの終点の指定について

    こんにちは。マクロ初心者です。 早速ですがやりたい事を書きます! A B C 1 名前 住所 TEL 2 あ  い 3 う  え 4 お  か … 100 き  く 上記のような状態で、C2セルにある関数(実際にはvlookupです) を入力し、オートフィルをC2からC100にかけたいです。 ただ、行数は毎回変化するので、AutoFill Destination は 固定ではなく、CurrentRegion の最終行までとしたいです。 どう記述すればよろしいでしょうか? 教えていただけましたら非常にうれしいです。 何卒よろしくお願いいたします。

  • エクセルマクロでA欄に値がある行までのC列の範囲を指定したい。?

    エクセルマクロでA欄に値がある行までのC列の範囲を指定したい。? ●エクセルマクロのVBAで次のように記述しています。 Range("C2").FormulaR1C1 = "=VLOOKUP(LEFT(RC[-2],4),C[-2]:C[-1],2,FALSE)" Range("C2").Select Selection.AutoFill Destination:=Range("C2:C148"), Type:=xlFillDefault A列に文字が入っている最終行は A148なので、C2: C148 の範囲にオートフィルで貼り付けるように しています。 しかし、A列に文字が入っている最終行は、変動します。 なお、貼り付ける範囲はいつでも C2から始まります。 A列に文字が入っている最終行が A200であれば、C2: C200の範囲、 A列に文字が入っている最終行が A321であれば、C2: C321の範囲といったように、 C2の値を貼り付ける範囲を設定したいと思っています。 ●そこで、次のように記入してみました。 With Worksheets(2) Dim lRow As Long, lRow = .Cells(Rows.Count, 1).End(xlUp).Row Range("C1").Formula = "名称" Range("C2").FormulaR1C1 = "=VLOOKUP(LEFT(RC[-2],4),C[-2]:C[-1],2,FALSE)" Range("C2").Select Selection.AutoFill Destination:=Range(Cells(3, 2), Cells(lRow, 3)), Type:=xlFillDefault 変数を使って最終行を指定しても上手くいきませんでした。 (C2:C150)や(C2:C160)といったように「C2」のセルを「C2のセル」から「A列に文字が 入っている行のC列」まで貼り付けたいと思っています。 どのようにVBAを記述したら良いのか教えていただけないでしょうか。

  • Excelで数値を文字列にした時

    例えば0001の前に「’」をつけると、0001って文字列になりますよね。 で、A1に「0001」って表示されて、オートフィルを使ってドラッグすると A2以降に0002~の番号がふられます。(今回はA1:A10に0001~0010まで ふっているということで) で、この0001とか0002って文字列のはずですよね。 なのにB1のセルに=A1+A2にするとちゃんと「3」て出てくるんですよ。 でも、COUNT関数でA1:A10を指定すると「0」が表示され、COUNTA関数で A1:A10を指定すると「10」が表示されてるってことはやっぱA1:A10のデータ は文字列ですよね。 他にもフィルタオプションで「>=’0005」(シングルクォーテーションは半角) とかって指定してもちゃんと抽出されたりと、 この「’」をつけるというのは数値を完全に文字列にしているのでしょか? ご存知の方教えてください。

  • VBAでオートフィルができません

    エクセル2007です。 画像のようにA列に値を入れて、B列に半角にする関数を入れて、最終行までオートフィルをしたいのですが、 --------------------------------------------------------- Sub test() Dim 最終行 As Long 最終行 = Cells(65536, 1).End(xlUp).Row ActiveCell.FormulaR1C1 = "=ASC(RC[-1])" Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault End Sub --------------------------------------------------------- をすると、 Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault の部分で、 [実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラー] になってしまいます。 原因と対策を教えてください。ご回答よろしくお願いします。

  • エクセルの列全体に計算式を入れられるのか?

    セルの計算式をオートフィルでコピーしていますが作成する資料が大量なので毎日同じ作業をするのも手間です。隣合うセルに数値が入っていればフィルハンドルのダブルクリック技もありますが事前に計算式を設定するのでそれもできません。指定した列全体に計算式の設定はできるんでしょうか?よろしくおねがいします。

  • マクロを使用してフィルについて

    データをコピーや挿入などをしたあとで 関数処理でフラグなどを入れる行がある場合、 フィルを使用すると関数が入ってるところまでしか 動きません(挿入前のデータのみ) 例 No データ フラグ 1 てすと 1 ←フラグの値はIF文で値を出すようにしてます。 2 らすと 2の行を挿入した場合、フィルをかけると関数がはいってないので フィルが機能しません。 マクロにはSelection.AutoFill Destinationというので フィルの先を明示的に指定すればできるのですが、 データがどんどん増えることを考えた場合、 変数か何かを使うのでしょうか??

  • EXCEL2007マクロ/オートフィルについて

    VBA初心者です。 EXCEL2007でオートフィルのマクロを作ったのですが、下記のケースで困っています。 A列のデータが入っている行までB列のデータをオートフィルで入力したく、 A列の最終行からデータが入っている行までを求めてB列のデータをオートフィルで入れるため、下記のマクロを設定しました。 Sub test()   Range("B1").AutoFill Destination:=Range("B1", Range("A1048576").End(xlUp).Offset(, 1)) End Sub ところが、A列のデータが2行以上ある場合はうまくいくのですが、一行のみだった場合オートフィルができなくてマクロがとまってしまいます。 一行なので当然なのですが、このような処理をしたい場合、他に方法はないものでしょうか? お知恵を拝借できますと大変助かります。 どうぞよろしくお願いいたします。

専門家に質問してみよう