• 締切済み

Excel;取得した列データーの使用法

エクセルマクロで ある列のデーターの最終行を求め、 となりの列の最終行からその行までLOOKUP関数を オートフィルで貼り付け、更にその関数で参照した データーを文字列にして再読込じの負荷を軽減する マクロを考えています。 最終行をもとめるのマクロはよく見ますが、 その使用方法がわかりません。 どうやって代入すればよいのか・・・ マクロの勉強を始めたばかりで、出来れば明日くらいに このマクロを作りたいのですが・・・ お願いします。

  • pent
  • お礼率40% (20/50)

みんなの回答

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

こんにちは。 まず、  >この間ここで教えていただいた と書かれても、 回答者からは質問者が過去にどんな質問をしたかは見ることができませんので、 検索に非常に困難or手間がかかります。 せめて質問番号ぐらいは明記しましょう。 さて、回答ですが オートフィルをするところについては、 こんな感じでいかがでしょう。 足りないところがあったら補足してください。 Option Explicit Sub test() Dim lngRowA As Long 'A列の行数を格納 Dim lngRowB As Long 'B列の行数を格納 'A列,B列の行数の取得 lngRowA = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row lngRowB = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row '開始セル:B列の最終行~ '終了セル:A列と同じ行までオートフィル Cells(lngRowB, 2).Select 'コピーもと(B列の最終セル)を選択 Selection.AutoFill Destination:=Range(Cells(lngRowB, 2), Cells(lngRowA, 2)) 'オートフィル End Sub

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

こんな問題で良いのでしょうか。 ●---質問するまでに完了状態(例えば前日まで)-- (サンプルデータ) A2:A6に入力データが済みました。 1 3 4 2 5 (Vlookup用のテーブル) C2:C6に 1 東急 2 大丸 3 高島屋 4 丸井 5 東武 があります。 (関数式) B2セルに=VLOOKUP(A2,$C$2:$D$6,2,FALSE)を入れ B6まで複写しました。 (結果) A1:B6は 1 東急 3 高島屋 4 丸井 2 大丸 5 東武 となっています。 ●---次ぎの状態 A7:A10にデータを(例えば)翌日入力しました。 1 2 3 4 ●---本件 Sub test01() da = Range("A2:A65000").End(xlDown).Row MsgBox da Db = Range("B2:B65000").End(xlDown).Row MsgBox Db Cells(Db, "b").AutoFill Destination:=Range(Cells(Db, "b"), Cells(da, "b")), Type:=xlFillDefault End Sub ボタンにセットした上記マクロをクリックして実行。 (本件ではボタンに関連付けていませんが) (結果) B7:B10はB6の式が複写されて A7:B10は下記になりました。 1 東急 2 大丸 3 高島屋 4 丸井 ●---- >「更にその関数で参照したデーターを文字列にして再読込じの負荷を軽減する 」の (1)データーを文字列にして (2)再読込じ(ミスタイプ?)の負荷を軽減 上記ではオートフィルの手間を削減。 あるいはエクセル素人に入力させ保存させ、後刻判る人が 再度開いて式を複写しているのですか。 の意味が十分判りませんでしたが、推測で回答。

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

#1です。 カッコが抜けてました。 Range(Cells(1,1),Cells(myRow,1)).PasteSpecial ですね。 すいません。

pent
質問者

補足

有り難うございます。 例えば A列の100行目、B列50行目までデーターがあって。 この間ここで教えていただいた '列のデータがが何行目まであるかを判別して、 'thisbookRwに格納 thisbookRw = .Range(.Cells(.Rows.Count, 1) _ .End(xlUp).Address).Row を使わせて貰って、とりあえず吸い出した変数を MsgBox (thisbookRw) で表示させてみると 100 という数字が出てきますよね。 こんな感じでB列C列最終行も取得して B列最終行(B50)からB列でA行最終行(B100) までオートフィルをかけたいと言ったときに、 どうやって指定したらよいか解らないのです。 非常に初歩的な所で申し訳ないです。

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

こんにちは。 いま、どのようなコードを書いていますか? 可能でしたら見せていただけると、アドバイスもしやすいです。 一般的な使い方の例を示しますと、 たとえば、最終列を変数myRowで取得したとしますね。 で、コピーしたデータを貼り付けるときに、  Range(Cells(1,1),Cells(myRow,1).PasteSpecial のようにして使います。 この例ではセルA1から、A列のmyRow行までの範囲に、 「形式を選択して貼り付け」を行います。

関連するQ&A

  • 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行以上ある場合はうまくいくのですが、一行のみだった場合オートフィルができなくてマクロがとまってしまいます。 一行なので当然なのですが、このような処理をしたい場合、他に方法はないものでしょうか? お知恵を拝借できますと大変助かります。 どうぞよろしくお願いいたします。

  • Excel 行の連続データを列に参照したいんです・・・

    Excelで縦のデータを横に参照したい場合どのように数式をコピーすればいいんでしょうか・・・?オートフィルをかけると行は固定されて、列は連続したデータになってしまいます。列を絶対参照にして行を相対参照にしてもできません。 すみません、どなたか教えてください。

  • エクセルマクロ 横向きのオートフィルについて質問

    VBA初心者です。エクセルでオートフィルのマクロに挑戦しています。 セルA2にすでに入力されている関数を横向きにオートフィルを行い、1行目の入力されている最終列まで行いたいです。1行目の最終列は可変です。 いろいろ調べても、「最終行まで」というものはあるのですが、「最終列まで」というものが見つからないので、どなたか助けてください!よろしくお願いします。

  • オートフィル

    オートフィルをダブルクリックすると左の列の最終行で止まっていたのですが、なぜか地続きになっている列の一番最終行までオートフィルがいってしまうのですが、なぜでしょうか? 地続きにせず列を一列あけるときちんと隣の最終行でとまります。 昨日まではちゃんと左の列の最終行でオートフィルが止まっていました。 使っているのは2010です。

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

    ここの掲示板でオートフィルのことが記載されておりましたが、 それについて、質問です。 オートフィルは、範囲が明確でないと実行することができないと思っております。 データを何行か挿入して、挿入する上の行からフィル処理を行いたい 場合って可能なのでしょうか。 例 A列 B列 C列(識別するための関数処理をがはいっている) 1 アメリカ 1 2 イタリア 3 3 フランス 4 4 メキシコ 2 5行目以降に何行か似たようなデータを挿入し、C列はオートフィルで 自動で処理を行いたい。 上記で問題になるのが、データを挿入した場合、C列には関数が 入ってない状態になると思います。 フィルの最終地点が不明確な場合、どのようにやればいいかが わかりません。

  • Excel2010のプログラム

    あるシートが元帳となっていて個人の情報(含む計算値)が入っています。このシートに続く、連続するシート(約200)に個人の情報を元帳より取ってきて(参照)表示したいのです。元帳にある個人の情報は3行で構成されています。したがって、個人の情報は3行飛びで同種のデータが入っています(同列) 私はマクロは使えません。最初のシートに一人目の表示スタイルを設定してして、シート参照でデータを元帳からとってくるようにしました。二人目は一人目のシートをコピーした後、シートのセル参照の値をすべて3飛びの行に直して使ってみました。機能はしましたが、とても200人分この処理をする気にはなれません。同一のシートであればINDIRECT関数とオートフィル機能で簡単に元帳の情報がとれるのですが、各シート(連続するシート)ではオートフィル機能が使えません。 どなたか簡単に200人分のシートが表示できる方法を教えてください。

  • Excel2010 数式のオートフィルに関して

    現在Excel2010を使っています。 関数を入力し、それを2000行までフィルしたい場合、やはり2000行ドラッグするしか方法はないのでしょうか? 隣接するセルにデータがある場合はダブルクリックでオートフィルできますが、他には何もデータがない場合、2000行までドラッグするのは面倒だと思い、何か方法がないかと探しています。 数値であれば、ホームタブ「フィル」→「連続データの作成」で停止値の設定ができますが、 文字列や数式の場合は設定できないようで…。 そして、その「連続データの作成」の設定の中に、「オートフィル」とあるのに停止値の設定はできず、 そのままOKをしても何の変更も起こりません。 この機能はどんなに使うのでしょうか? もしご存知の方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • VBAを使わずに複数シートの列データを縦に並べたい

    フォーマットの異なる表が4種類あり、集計用シートと合わせて5シートを1つのブックにまとめています。各表はカテゴリーが異なるWebサイトのURLリストの列を持っていて、そのURLを集計用シートにまとめたい(縦に並べたい)のですが、Web検索で調べながらOFFSET、ROW、MATCH関数などで挑戦するも、関数の整理がつかず、セル位置の指定と入れ子の式が複雑でうまくいきません。 シート1のURL列の2行目(タイトル行があるので)から最終行までを参照した後、シート2の頭から順番に最終行まで参照し、それをシート4まで繰り返し行うというものです。 VBAは使わずに関数だけで完結させたいです。 どうかご教示ください。 よろしくお願いいたします。 ◆環境:Excel 2016/Windows10 ◆ブックの構成(添付画像ご参照)  ・シート1:参照元シート(1)  ・シート2:参照元シート(2)  ・シート3:参照元シート(3)  ・シート4:参照元シート(4)  ・シート5:参照先集計シート  ※シート1~4はフォーマット及び行数がバラバラの表。  ※各表にはWebサイトのURL一覧の列がそれぞれ含まれている。  ※各表のURL列の1行目のタイトルは「URL」で共通。(列番号はバラバラ) ◆やりたいこと  ・シート1~4のURLの列をまるごとシート5に縦に並べてまとめて参照したい。  ・マクロではなく関数で完結させたい。  ・シート1~4をそれぞれ更新(新データをペースト)すれば、シート5も最新に更新される運用としたい。

  • 2行2列セルのオートフィルコピー

    excel2003 D11:E12の結合セルに参照式が入っています。 =LIST!I11…(1) 以降 D13:E14 は =LIST!I12 D15:E16 は =LIST!I13 というコピーをしたいです。 (1)のセルでオートフィルコピーを実施すると、 D13:E14 は =LIST!I13 D15:E16 は =LIST!I15 と飛び飛びになってしまいます。 調べてみると行が結合されたもののオートフィルコピーは、 文字列表記にしてからオートフィルコピーし、データ区切り位置で変更すると、 飛び飛びにならずにコピー可能ということで、1列の場合は対象のコピーが実現できました。 しかし、今回の場合、2行2列のセルなので 下記の様なexcelのエラーが表示されます。 ------------------------------------------------------------------------- 一度に変換できるのは、1列だけです。範囲には複数の行を選択できますが、列は1列しか選択できません。1列だけのセル範囲を選択し、再度実行してください。 ------------------------------------------------------------------------- オートフィルはだめみたいなので、 2行2列のセルを参照番号が連続した状態で、簡単にコピー可能な方法を教えていただきたく。

  • 列のデータに変化があるとマクロを実行

    A列 - B列 - C列 - D列 1 - 123 - 234 - 678 2 - 456 - 567 - 890 3 - 333 - 444 - 555 4 - 765 - 876 - 321 5 - ? - ? - ? 6 - ? - ? - ? の様なデータがあり行のデータ日々増すとき C列最終行のデータD1に出したいのですが? C列のデータに変化があるとマクロを実行して 常にC列最終行のデータD1に出したいのです どなたか良きアドバイスをお願い致します。

専門家に質問してみよう