3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

UnionとIntersect、共通部分を表す演算子 (スペース) – Excelマクロ・VBA

2012年1月12日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

エクセルマクロ・VBA達人養成塾 小川です。

キューバ旅行記、その81です。

キューバ屈指の外人向けリゾート地、バラデロにて。
バラデロ3日目の朝。「Delfinario (デルフィナリオ)」という、イルカと遊べるテーマパークに行って帰ってきました。

エクセルマクロ達人養成塾塾長ブログ-デルフィナリオから戻ります。

デルフィナリオから戻ります。

エクセルマクロ達人養成塾塾長ブログ-あー、そうそう。たまにはゴハンの写真なども。

あー、そうそう。たまにはゴハンの写真なども。

エクセルマクロ達人養成塾塾長ブログ-甘すぎて食べれなかったケーキ。

甘すぎて食べれなかったケーキ。

エクセルマクロ達人養成塾塾長ブログ-ホテルのプール。

ホテルのプール。

エクセルマクロ達人養成塾塾長ブログ-ロビーにて。

ロビーにて。
塾長のキューバ旅行記、最初から読みたい方はこちらから


UnionメソッドとIntersectメソッド、共通部分を表す演算子 (スペース) – Excelマクロ・VBA

ちょっと前のブログ記事「複数セルに値を入れる処理を高速化したい – Excelマクロ・VBA

と、その続きの記事「複数セルでの処理を高速化したい-その2 Unionメソッドを使用する Excelマクロ・VBA

に関連して、ついでに書こうと思っていて忘れていたことがいくつかありました。

今日は、そのうちのひとつについて。
こんなサンプルコード↓を紹介しました。

Sub UniSample1()

Dim r As Range

Set r = Union(Range(“A1:C5”), Range(“B4:F8”))

r.Select

End Sub

Unionメソッドは、複数のセル範囲のすべてを含むセル範囲を返します。
で。

その反対に、

複数のセル範囲のすべてに含まれるセル範囲を返すメソッドもあります。

それが、 Intersect というメソッドです。

例えば、以下のマクロを実行すると、セル範囲C3:D5が選択されます。

Sub IntersectSample()

Dim r As Range

Set r = Intersect(Range(“A1:D5”), Range(“C3:F6”))

r.Select

End Sub

まあ、Unionと比べて、使用頻度はかなり落ちますが…。対にして覚えたいノウハウなので、ご参考までに。
あと、Intersectメソッドを使わなくても、実は、以下の書き方でも、「複数のセル範囲のすべてに含まれるセル範囲」を一気に指定できます。

絶対使わない手法ですが、ご参考までに。

Sub IntersectManiac()

Dim r As Range

Set r = Range(“A1:D5 C3:F6”)

r.Select

End Sub

引数の間に、スペースが入っています。

どういうことかというと…。

以下、ヘルプから引用しますね。

必ず指定します。バリアント型 (Variant) の値を範囲の名前を指定します。これは、マクロの言語の A1 形式での範囲である必要があります。範囲名には、範囲を表す演算子 (:)、共通部分を表す演算子 (スペース) または複数の範囲を表す演算子 (,) を含めることができます。また、ドル記号 ($) は含めることはできますが、無視されます。範囲の一部にローカルに定義した名前を使用できます。名前を使用する場合、その名前はマクロの言語と見なされます。

スペースも、演算子なんですね。
ちなみに、この性質は、エクセルの関数にもあります。

例えば、以下のデータがセルに書き込まれているとします。

       |B列  |C列   |D列   |
-------------------------------
2 行目 |id   |datat1|data2 |
-------------------------------
3 行目 |a1   |1     |10    |
-------------------------------
4 行目 |a2   |2     |20    |
-------------------------------
5 行目 |a3   |3     |30    |
-------------------------------

そのとき、セルA1に、以下の関数を書き込みます。

=SUM(A1:D5 C3:F6)

すると、Sum関数は、セルC3~D5までの範囲の値を合計し、セルA1に66と表示されます。
…。

あー、また、どうでも良いことを書いてしまった。
Intersectだけは覚えてください。

Sub IntersectManiac()

Dim r As Range

Set r = Range(“A1:D5 C3:F6”)

r.Select

End Sub

とか、

=SUM(A1:D5 C3:F6)

とかについては、忘れてください。こんなの覚えるのは、人生のムダです。

僕だって、こんなの、一生にあと何回書くことか… ヾ(´ー`)ノ
あ、あと、最後にお知らせが2つ。こちらは、人生の役に立つほう。
人気のセミナー2つを、久しぶりに開催します。

「親指シフト達人養成塾」

「エクセルデータ分析7つの上級技」
受講受付開始しました。ふるってご参加ください☆
ではでは (^^)/~

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド