エクセルマクロ・VBA達人養成塾 小川です。
キューバ旅行記、その87です。
ハバナに戻ってくると、天気は荒れ模様になりそうな気配でした。
マタンザスを出たあたりでそれは感じていたのですが…。
このあと、超大雨になります。
バラデロで予約していた「ホテルセビージャ」ホテルに向かいます。
このホテル、キューバでも由緒正しい老舗で、キューバ革命前には、アル・カポネが借り切って拠点としていたらしいです。
何を隠そう、キューバ初日に飛び込みで「部屋はないか?」と聞いて、断られたホテル。
革命博物館の近くを抜けて、歩いていきます。
なんか、雲行きを見ていると、雨に降られるのとホテルにつくのと、いい勝負な感じの気配。。。
..と思っている間にも、どんどん怪しい雲行きに。
エクセルのオートフィル機能をマクロで使うといろいろ便利です。
関連記事: For NextよりAutofillのほうがかなり高速! – Excelマクロ・VBA
ということで、今日は、「オートフィルは、かなりすごいぞ(その1)」ということで、その第1弾を。
ただし、かなりどうでもいい四方山話(よもやまばなし)的なことなので、「へー」て感じで聞き流してください。
間違っても、「実務に直結する、役立つ知識を仕入れられる」なんて思わないように ヾ(´ー`)ノ
まず、原則。
オートフィルはメソッドで、以下の構文を取ります。
expression.AutoFill(Destination, Type)
expression、Destinationのところでは、セルを指定すると思っておけばOK。
Destinationには、expressionで指定された範囲が含まれていなくてはならない。
例えば、以下の、[1]の要領。
そして、引数Typeには、以下の値を取り得る。ヘルプから、ちょっと加工して引用。
特に明示的に指定しないと、 xlFillDefaultを設定したのと同じになる。
つまり、以下の[a]と[b]が言っていることは実質同じ。
で、では、「Type:=xlFillDefault」以外のオプションで、何かおもしろいものはないか?というお話。
今日は、これを取り上げたい↓
<
br />xlFillSeries
xlFillSeriesは、加算を実行してくれる。
以下のマクロを実行して欲しい。
Range(“B1”).Value = 1
Range(“B1”).AutoFill Destination:=Range(“B1:B10”), Type:=xlFillDefault ‘[2]
Range(“C1”).Value = 1
Range(“C1”).AutoFill Destination:=Range(“C1:C10”), Type:=xlLinearTrend ‘[3]
Range(“D1”).Value = 1
Range(“D2”).Value = 3
Range(“D1:D2”).AutoFill Destination:=Range(“D1:D10”), Type:=xlLinearTrend ‘[4]
End Sub
結果はどうなるかとというと、こんな感じ↓。
|A列 |B列 |C列 |D列 |
--------------------------------
1 行目 |1 |1 |1 |1 |
--------------------------------
2 行目 |2 |1 |2 |3 |
--------------------------------
3 行目 |3 |1 |3 |5 |
--------------------------------
4 行目 |4 |1 |4 |7 |
--------------------------------
5 行目 |5 |1 |5 |9 |
--------------------------------
6 行目 |6 |1 |6 |11 |
--------------------------------
7 行目 |7 |1 |7 |13 |
--------------------------------
8 行目 |8 |1 |8 |15 |
--------------------------------
9 行目 |9 |1 |9 |17 |
--------------------------------
10行目 |10 |1 |10 |19 |
--------------------------------
何がすごいかっちゅーと。
[2]で実行されたマクロでは、B列に入っている値は1です。
通常のオートフィルでは、[1]のように、(エクセル画面上の操作で行っても)最低でも2つのセルに別々の値を入れないと、自動的に加算された値は入っていきません。
なんですが。
[3]のように、
Type:=xlLinearTrend
を指定すると、起点になるセルの値ひとつだけを入力すればOK、というわけ。
かつ、[4]のように、2つ以上のセルに値を入れてからの実施でも、加算の度合いを考慮した値を入れてくれます。
くり返しますが、こんなの、覚える必要はまったくないです。
だって、それって、以下のどちらの書き方をするかっていう議論なんですが。
[x]のほうは、自動記録で作ったマクロを削っていけばそのまま作れますが。
[y]のほうは、それよりさらに1行削れますが、 Type:=xlLinearTrend って書かなくてはなりません。
人に見せるときにはちょっとカッコいいかもしれません。
なんですが…。たぶん、カッコいい以外に、特に使い道ないです。
こんな余計な知識を抱えておけるリソースがあるなら、実務に直結するノウハウを頭に入れたほうがいいと思います ヾ(´ー`)ノ
お知らせ:
人気のセミナー2つを、久しぶりに開催します。受講受付開始しました。ふるってご参加ください☆
「親指シフト達人養成塾」
「エクセルデータ分析7つの上級技」 (あと2名)
「エクセルデータ分析」は、ほとんどリピータの方だけで埋まってしまいまして、早くも、残席2つだけとなりました。
親指シフトも、あと5名くらいです。
●無料PDFレポート「誰もが知っているWindowsの、誰も知らない12の技」
http://www.exvba.com/freereport/index.php
●法人研修のお問い合わせはこちら
https://sv86.wadax.ne.jp/~exvba-com/closed/toiawase_houjin.php
●ジーザス小川の個人サイト「こねこねのさいと」へはこちらから
http://www.exvba.com/