教育関連リンク集 | 画像・素材 | コンピュータマニュアル集 | ソフト集 | 本・情報 | 特 集 | みんなで話そう | 研究会概要 | 会員登録 | TOP |
ExcelのVBAに挑戦しよう |
Excelで表を作り自動で処理するには関数が多く使われますね。関数を覚えてしまえばほとんどのことが処理できてしまいます。でも、中には簡単な処理にもかかわらず関数で処理できない、または処理しにくいものもあります。 処理の仕方は、何となくわかるのにそれにあった関数がない。悔しいですよね。 そのようなあなたのために今回はVBAに挑戦してみましょう! 最初からすべてを理解しようとするとくじけます(私の場合(^_^;))ので、今回のものを一部換えていろいろなものに応用してみてはいかがでしょうか。 |
緑のセルに項目を入れると黄色の表から対応した項目等をブルーの表に転記したい |
関数でいけちゃうのでは? |
関数を使ったことがある方は、「おっ、これはVLOOKUPが使えそうだ!」と気づくかもしれません。 ですが、VLOOKUP関数で取り出せるデータは下図のピンク色の部分それも1行分です。 項目の列の左のデータも取りたい、しかし既存の表はそのまま生かしたい・・・。 それなら、ちょっと勇気を出してVBAに挑戦してみましょう! |
1.VBAの下準備 | ||||||||||||
|
2.まずはボタンを作ろう | ||||||||||
|
3.ボタンを押したときの処理(コード)を記入しよう | ||||
|
4.コードの解説 |
ここでの解説は多少の応用できる程度にとどめます。興味がある方はネット上に多くのVBAに関するサイトがありますので探してみて下さい。 1)Worksheets("Sheet1").Cells(j, 1) = Worksheets("Sheet1").Cells(i, 1) 上のコードは「Sheet1という名のシートのセル(i , 1)をSheet1という名のシートのセル(j , 1)に代入(転記)する」という意味です Cells(j, 1)は「j 行の1列目のセル」を意味します。 Excelでは初期の状態ではセルは”A1”のように「列」「行」の順で表します。1行目の1列のセルは、「マクロの記録」では Range("A1") のように表示されます。 VBAを使うにはいささか不便が出てきますので Range("A1") ではなく Cells(1, 1)のように記述しました。 VBAの下準備で[R1C1参照形式を使用する]としたのにはこのような訳があったのです。 |
5.いざ実行 | ||||
|
6.エラー(デバッグ)がでたら | ||||||
|
いろいろなシートで応用してみよう! |
今回のコードは、いろいろな既存のシートに応用できると思います。 i = 2 '項目を拾い出す行 例…ピアノ等 j = 17 '拾い出した項目を入力する行 Worksheets("Sheet1").Cells(j, 1) = Worksheets("Sheet1").Cells(i, 1) '伝票No 等の数値をいじれば自分のやりたいコードに変身するのではないかと・・・。 ご質問等ありましたら、掲示板またはメールでお願い致します。 |