• 締切済み

エクセルのマクロで悩んでます

はじめて投稿いたします。 現在、エクセル2000でマクロを組んでいるのですが、何日も悩んでそこから動けないので質問させていただきます。 やりたいことは、 (1)検索フォームの入力テキストに記載した数値を読んで検索ボタンを押すと、 (2)データブック.xls内の完全に一致した数値のセルの行をアクティブにして (3)その行のA列からO列の値をコピーして (4)入力ブック.xlsの入力シートのB4:B18に数値だけ貼り付け したいと考えています。 検索フォームは入力ブック.xls内で作成しています。 今のところ、(3)でA列の値を読んで、(4)でB4セルに貼りつけということはできているのですが、複数になるとできていません。 根気よく、同じプログラムを書くのが良いのでしょうか? かなり面倒なので、もっと簡単にかける方法があれば教えてください。

みんなの回答

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.3

>個人的に最も引っかかっているのが、別ブックで処理を繰り返さなければならないところなんですが・・・。 一個ずつができているのであれば、RangeかCellsの指定先を変数に変えてやって、For文の回すのでいいのでは? 変数は使いまわし・上書きができるのですから、値を保持しておかないといけない理由がない限りはFor文を書いてやる以外に差はないと思いますが・・・ それと、いちいちアクティブセルを指定してやる必要はないです。 アクティブセルが指定されなくても値は指定したセルに代入されます。 それともブックやシートの指定方法がわからないということでしょうか?

juventos09
質問者

お礼

sykt1217さん、回答ありがとうございます。 このサイトの使い方をイマイチ理解していなかったもので、返信が遅くなってしまい、申し訳ありません。 ご回答をいただいてから四苦八苦しておりましたが、先ほどようやくできました!! 考え方をご教授いただきましてありがとうございました。

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.2

>複数になるとできていません。 ここがちょっとわかりませんが、「二つ以上のセル」ということでしょうか。 それであればFor文を使ってやればいいかなっと思いますが・・。(論点がズレていたらすみません。) 例: Dim i As Integer With Worksheets(ActiveSheet.Name)  For i = 2 To 32   .Cells(7, 33) = .Cells(7, 33) + .Cells(7, i) Next End With 上はAG7にB7~AF7の値を足して行く簡単な処理です。 これをベースに考えれば、恐らく実現できると思います。(本当に論点ズレていたらすみません^^;

juventos09
質問者

お礼

sykt1217さん、回答ありがとうございます。 個人的に最も引っかかっているのが、別ブックで処理を繰り返さなければならないところなんですが・・・。 For文を使って、考えて見たいと思います。

  • denbee
  • ベストアンサー率28% (192/671)
回答No.1

そのような場合はforループやwhileループによる繰り返し制御を行えばよろしいかと思います。 繰り返し制御とは、一定条件を満たすまで同じ処理を繰り返すことを言います。 例えば、  while(アクティブなセルが空白でない)   (3)、(4)の処理   次のセルをアクティブにする  wend とすると、アクティブなセルが空白になるまで、(3)、(4)の 処理を繰り返します。 上記はおおざっぱに書いているだけですので、詳細は「whileループ」や「forループ」 などの単語で検索して調べてみてください。

juventos09
質問者

お礼

denbeeさん、回答ありがとうございます。 別ブックでそれぞれアクティブセルを移動させるのはどうしたらよいかわかりますか?? 初心者なので、変数が2つ以上あるとイマイチ分からないのですが・・・

関連するQ&A

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。 マクロを発動した時に、あるセルに入力してある数値を参照し、その行のX列目に数値を張り付けるものを作成しようとしています。 例えば シート「1」の A1に日付を入力 B1にある数字を入力 シート「2」の A列にA1→1~A31→31の日付が入力されている時 マクロ発動時にシート「1」A1の日付と一致する シート「2」のB列にシート「1」のB1の値を貼り付け ↑たとえばシート「1」のA1が1日でB1が500だった場合 シート「2」の1日(A1)と同じ行でB列(B1に500を 貼り付けるものです。 かなり下手な説明だと自覚しておりますが、解読できる方 どうかご教授ねがいます。

  • エクセル2010 繰り返しマクロ

    (1)g列の空白の最上行に =SUMPRODUCT(min((a:a>=f2)*(a:a<f2+730)*e:e)) と入力。 そのセルをコピーし、同じセルに値を上書き貼り付け ↓ (2)a列に(1)のセルの左隣のセル以下の数値がある行の、b列を削除 (画像の場合、(1)のセルがg1の場合、b2,b3を削除する) というのを、f列に数値がある行だけ繰り返すマクロの構文を教えてください。 大変お手数おかけいたしますが、どうぞよろしくお願いします。

  • エクセルマクロ:別のブックから該当するデータをコピー

    Book1のSheet1、A列に日付、B列に対応するデータがあります。 Book2のSheet1A1セルに入力された日付と一致するBook1Sheet1B列の値を、Book2のB1セルに値貼り付けしたいのですが、どのように記述すればよろしいでしょうか。 宜しくお願いいたします。

  • Excel

    A.xlsとB.xlsの2つのブックがあります。 A.xlsのSheet1のB2セルに文字列が入っています。その文字列にはJ3など列と行の組み合わせの値になってます。 このA.xlsのSheet1のB2のセルの文字列を使ってB.xlsのSheet1の上記のB2に書かれた位置のセルの値を取得したい。 これを実現するにはどうすればいいですか? ご教授お願い致します

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • エクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

    単刀直入にやりたいことを述べます。 Cドライブと仮定します。3つのBOOKがあります。 それぞれ ----- BOOK1.xls「○○Sheet」・・・(実行するファイル)   A 1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です) 2 A2:E2・・・(コピーするセル範囲の指定) 3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です) 4 A5・・・(貼り付け先のセルの指定) ----- BOOK2.xls「△△Sheet」・・・(コピー元ファイル)   ABCDE 1 あいうえお 2 かきくけこ 3 ・・・・・ ----- BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)   ABCDE 1 ・・・・・ 2 かきくけこ・・・(貼り付け) 3 ・・・・・ ----- >やりたいこと BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、 その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、 BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、 その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。 別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、 以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。 よろしくお願いします。(ちなみにエクセル2000又は2003です)

  • Excelの値貼り付けについて

    Excelの値貼り付けについて   A列  B列 1   1 2       2 3   3 4       4 5   5 6       6 7   7 8       8 9   9 10      10 A列・B列の1~1000行にランダムに数字が入力されており、A列の値を残したままB列の数字をA列に追加したいです。 同じ行でA・Bどちらにも数値が入力されていることはありません、かならずどちらか一方です。 関数を使わないと出来ないでしょうか? 検索してみましたが、見つからないためどうか宜しくお願い致します。

  • エクセルのマクロを教えてください。

    初心者です。 エクセルで次のような操作をしたいのです。 ブック1のセルA1に入っている値の新しいブックを作る。 その新しく作ったブックのセルB1からB10へ元からあるブックの セルB1からB10までの値をコピー、貼り付けする。 ボタンを押したら、上記の様な動作をするにはどうしたら良いでしょうか? なお、ブック1のセルA1の値はその度、変化するので、新しく作られる ブック名もその度変わるようにしたいのです。 宜しくお願いします。

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。