• ベストアンサー

ExcelVBAでプログラミング

ExcelVBA初心者です。 A表とB表があり、そこからC表を出力するプログラミングを作りたいのですが教えてください。 A表(順不同) あ 100 い 1000 う 1500 え 1800 お 300 B表(順不同) a う b あ c え d お e い C表(B表の記載順) a 1500 b 100 c 1800 d 300 e 1000 A表とB表は与えられていて、A表とB表の順番は入れ替わることがあるとする。C表はB表の記載順に整列する。 色々調べたのですがどのようなプログラミングを組んだらよいのかわからずこのサイトで質問に踏み切りました。 宜しくお願い致します。

  • kx15
  • お礼率100% (6/6)

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

  • ベストアンサー
  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.1

まず、VBAでプログラミングすることが目的なら、 A、B,C表がどこのシート(どんな名前のシート名)にあるとか それぞれの表がセル番地のどこに入力されているか等を 明確に記述した方が良いですよ!! そうしないと回答者がそれを規定しなければなりませんから・・・。 シート名を  表の名前だとします。つまり、 A表があるシート名をA表 B表があるシート名をB表 C表があるシート名をC表 とし、それぞれの表は各シートのセルA1~B5(例題の場合) に入力されているとします (C表の場合は、その範囲に作成するものとします) 標準モジュールに '======================================================= Sub main()   Dim arng As Range   Dim brng As Range   With Worksheets("A表")     Set arng = .Range("a1", .Cells(.Rows.Count, "a").End(xlUp)).Resize(, 2)     End With   With Worksheets("B表")     Set brng = .Range("a1", .Cells(.Rows.Count, "a").End(xlUp))     End With   With Worksheets("C表").Range(brng.Address)     .Value = brng.Value         .Offset(0, 1).Formula = "=vlookup(" & _               brng.Cells(1, 2).Address(False, False, , True) & _               "," & arng.Address(, , , True) & ",2,false)"     End With End Sub mainを実行してみてください

kx15
質問者

お礼

お礼が遅くなって申し訳ありませんでした。 lark_0925さんの回答の通りにSheetに名前をつけ実行してみました。 自分が勉強不足なのを改めて実感しました。 忙しいなか今回は回答頂き本当にありがとうございました。 これからもっと勉強をしていきたい思います。 lark_0925さんをみつけたら今度は力になりたいと思っています。 本当にありがとうございました。

その他の回答 (2)

  • squip
  • ベストアンサー率16% (2/12)
回答No.3

A表を Sheet1、B表を Sheet2 とし、それぞれ A 列と B 列にデータがあるものとする。 C表を Sheet3 として、以下の式を入力する。 A1: =Sheet2!A1 B1: =VLOOKUP(Sheet2!B1,Sheet1!A:B,2,FALSE) 範囲 A1:B1 を選択して必要な行数分オートフィルする。

kx15
質問者

お礼

今回は回答頂きありがとうございました。 まだまだ勉強不足を感じこれからもっと勉強していきたいと思います。 squipさんから指摘いただいたVLOOLUPの使い方がネットや書籍を通してもいまいち理解できずもう少し勉強を進めてから使ってみようと考えています。 徐々にプログラミングに慣れていけたらと考えています。 今回は本当にありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

A・B・C表は同じシートにあるのですか?違うのですか? シート構成(セル番地)はどのようになっているのですか? A・B表のキーは重複はないのですね?

kx15
質問者

お礼

今回は質問の仕方や説明不足を指摘して頂きありがとうございました。 表をどこに配置するかやsheet構成の事を考えずに質問してしまいすいませんでした。 次回からはもっと勉強をし、しっかり構成を考えてから質問したいと思います。

関連するQ&A

  • EXCELで複数条件の検索

    6人(A,B,C,D,E,F)で麻雀を打つことになりました。 全員と打てるようにするには6C4で 15通りの組み合わせが出来ます。 で、表を作りました。 C,D,A,Fの組み合わ(要するにA,C,D,F)の試合番号を求めるには、 どうすれば良いですか? ※A,C,D,Fの並びは順不同です

  • ExcelVBAで結合セルのある高さ調整

    ExcelVBAでの質問です。Aはチェック欄、Bは連番、Cは日付、Dは名前、Eは内容を入力。ExcelVBAで以下のような表で「講義」とい う文字を検索してチェックをつけ、ソートするところまではできました。 A B C    D  E   1 5/1  福島  研修   2 5/1 佐藤  集会   3 5/1 鈴木  セミナー ○ 4 5/1 鈴木  講義   5 5/1 山中  集会 ○ 10 5/4 古河  講義   11 5/4 山田 研修   6 5/2 森川  セミナー   7 5/3 山中  研修   8 5/3 佐藤  集会   9 5/3 佐藤  セミナー 上記のようにチェックがある日付順になっています。元々「各行には点線が、日付ごとには太線が引いてあって区別されてしました。それを私が「セル結合解除、B列連番」をして並び替えたために、元々の日付のセルの大きさは崩れ、罫線は太線も点線もごちゃごちゃになったのです。 で・・・お伺いしたいのが「行の高さ調整」について。「5/1は5行なので60、5/4は2行なので27、5/2は1行なので13.5」と高さは決まったいるのですけど、更に日付ごとに「セル結合」する予定なのです。もっと本当の表は複雑で、私がここでは簡略化しているですが、うまく調整できないのです。この表は上の状態から元の表に近づけるべく「日付ごとのセル結合、罫線、行の高さ調整」をする予定です。 とりあえず一番困っているのは、「セル結合する予定の5/1を5行で60にする」方法です。先に「日付ごとにセル結合」をしたら、行の高さを調整するのがうまくできなかったのです。 わかりにくいのですがよろしくお願いします。初心者初心者していてすみません。

  • C言語プログラミング

    C言語プログラミングに関して質問です。 元本、年数、単利、複利を順にa,b,c,dと置き、年数経過後の単利、複利の場合のそれぞれの額をe,fとしたとき、 e = a+(a*c)*b となるのはわかるのですが、複利の場合の金額を求める時の計算式はどう書けばよいのですか。 また、複利が単利より小さい時、何年後に複利のときの金額が単利のときの金額を越すかを表示したいのですが、次の書き方で合ってますか。 if(d < c){ b = 2; while(1){ if(f > e) break; else b++; } printf("%d年後、単利のときの金額を複利のときの金額が追い越します\n",b); }

  • Excelのデータ抽出

    Excelで以下のような作業ができる関数があれば、ぜひ教えて下さい。 各社にα~γの区分けを付け、それが順不同に並んでいる表から、 元データに書かれている順番通りにαのものは表1に、βのものは表2に、 γのものは表3に、というように、複数の表に分けられるような関数、 もしくはやり方をご存知の方はぜひ教えて下さい。 【元データ】        【表1】       【表2】     【表3】  1  2           1  2      1  2      1  2  α A社          α A社     β B社    γ  C社  β B社          α E社     β F社    γ  D社  γ C社                             γ  G社  γ D社    →      α E社  β F社  γ G社 ちなみに、元データ上で、α→β→γの順番に並び替え、それを表1~表3に コピペする方法は思いつきました。ただ、元データは毎日増えていきますし、 データ数も結構多いので、可能なら、元データに入力するだけで、自動で表1 ~表3にも反映されるような、やり方があれば、と思いまして。 よろしくお願いします。

  • ExcelVBAで複数範囲した色セルと、条件で別セルも同色になるようにしたい

    ▼Excel2003を利用でSheet1とSheet2を使っての質問です▼ 下記に簡単に事例を記載いたします。(※実際にはデータが沢山あります) ★Sheet1にはA1~G3範囲横7列縦3行の表があり、表中にはA1、B1、C1、D1が空白でその次からは1~17までの数字が横列に沿って順次入っています。G3セルが最後の数字の17となっています。 横7列に入っている数字はA1、A2、A3、A4空白のセル以外は列毎にセル背景色が異なり全部で7色入っています。 ★次にSheet2に新たにA1~D4範囲内に表を作り、順次セルに数字値を入力し、例えばSheet2のA1セルが1だったら、そのSheet2のA1セル背景色をSheet1の表中の1が入力されているセルと同じ背景色にしたいです。 以上の課題をExcelVBAを使って解決したいのですがご存じの方いらっしゃいましたらVBAでどうプログラミング表現すれば良いか教えていただければ幸いです。 ちなみに私自身はExcelVBAを一度も使ったことがなく初心者です。 恐縮ながらもよろしくお願い申し上げます。

  • Excelですが関数式を教えて下さい。

    Sheet1に下記の表があり、Sheet2では氏名順不同でSheet1のB列,C列と小計。D列,E列の小計,合計の表にしたいのです。理屈は簡単そうですが素人でわかりません。何か良い方法があれば教えて下さい。 Sheet1   A   B   C   D    E   F      1     (1)  (2)  (3)  (4)  合計 2 小泉  25  25  23  24   97 3 福田  23  24  20  22   89 4 阿部  24  22  19  25   90 Sheet2  (1)  (2) 合計 1 阿部  46  44  90 2 麻生   ・  ・  ・ 3 ・

  • ExcelVBAについて

    ExcelVBAについて Excel VBA初心者です。 やりたいことを説明しますと、 フォームA上に、テキストボックスBとコマンドボタンCがあるとします。 テキストボックスBにはMPGファイルのフルパスが既に入力されており、コマンドボタンCを押すとテキストボックスBのファイルを開けるようにしたいのです。 お手数ですが、よろしくお願いします。

  • プログラミングの質問です。

    c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 1.数字を5個続けて入力させ、大きい順に並び替え、出力する。(配列を使う事) プログラミングわからないのでお願いします。

  • C言語で5つの整数a、b、c、d、eを入力し、降順に整列した後に出力して終了するプログラムを作成してください

    C言語で5つの整数a、b、c、d、eを入力し、降順に整列した後に出力して終了するプログラムを作成してください。 入力 出力 3 9 6 7 9 6 7 5 5 3

  • Excelで文字列を独自の二進数で表したい。

    A,B,C,D,Eのいずれかを含む文字が順不同でセルに入っているものから、 A=10000 B=1000 C=100 D=10 E=1 と置換して足した、二進数であらわしたり、逆にその二進数から文字列に戻したりしたいです。 (例:DAなら10010、EBCなら1101) VBAの自作関数を含めてExcelの関数でできる方法があればお教えくださると助かります。

専門家に質問してみよう