VBA union関数【 複数のセル選択はいろんなことに応用可能 】

広告

union関数とは

セルを複数選択して、なにかしらの処理をしたいときに便利なのがunion関数です。unionは「結合」や「融合」といった意味であり、union関数もこれと同様の働きをします。union関数を使えば複数のセル(Range)を一つのオブジェクトとして使用することができる。

 

基本構造

 

Dim オブジェクト As Range

Set オブジェクト = union(Range(),Range())

 

サンプル

 

Dim Oj As Range

Set Oj  = union(Range(“A3:C3"),Range(“G4"),Range(“K6"))

Oj.Select

サンプルの結果は以下のようになります。

「Ctrl」 + クリックで同じ操作ができます。

 

union関数を使ったVBA① 複数セルの数値を集計する

選択範囲が連続していないとき、union関数を使って範囲指定をすれば簡単に数値の集計が可能です。

サンプル

2行目から1つ飛ばしでセルを選択し、選択したセルの合計を集計する!というプログラムをつくってみます。For~Nextを使えば簡単に出来るところを今回はUnion関数とSumを使って計算します。

 

1 Sub テスト()
2 Dim Te As Range
3 Set Te = Union(Range(“D3"), Range(“D5"), Range(“D7"), Range(“D9"), Range(“D11"), Range(“D13"))
4 Te.Select
5 Range(“D14") = Application.WorksheetFunction.Sum(Te)
6 End Sub

 

サンプルの結果

D14セルに合計が集計されました。

 

union関数を使ったVBA② 複数セルの色を変える

色を変えたい範囲が連続していないとき、union関数を使って範囲指定をすれば簡単にセルの色を変えることが可能です。

 

サンプル

1 Sub テスト2()
2 Dim Te As Range
3 Set Te = Union(Range(“D3"), Range(“D5"), Range(“D7"), Range(“D9"), Range(“D11"), Range(“D13"))
4 Te.Interior.Color = RGB(0, 255, 255)
5 Range(“D14") = Application.WorksheetFunction.Sum(Te)
6 End Sub

unionと色を操作するVBAの組み合わせはかなり使えます。色の操作について下記の記事で詳しく紹介しています。

 

union関数を使ったVBA③ グラフの範囲を指定する

表からグラフを作成する際、グラフの項目としたい範囲とグラフのデータとしたい範囲が離れているとき、union関数を使って範囲指をすれば簡単にキレイなグラフを作成することが可能です。

サンプル

上記のような一覧表から棒グラフと円グラフを作成します。

 

1 Sub 棒グラフ()
2 With ActiveSheet.Shapes.AddChart.Chart
3 .ChartType = xlColumnClustered
4 Set Ta = Range(“A3:A4")
5 Set Ta2 = Range(“D3:D4")
6 .SetSourceData Source:=ActiveSheet.Range(Ta, Ta2)
7 .HasTitle = True
8 .ChartTitle.Text = “収入・支出"
9 .HasLegend = False
10 .Axes(xlCategory).HasTitle = False
11 .FullSeriesCollection(1).Points(1).Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2
12 .FullSeriesCollection(1).Points(2).Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent5
13 End With
14 End Sub

 

1 Sub 円グラフ()
2 With ActiveSheet.Shapes.AddChart.Chart
3 .ChartType = xlPie
4 Set Ta = Range(Cells(10, 2), Cells(10, 6))
5 Set Ta2 = Range(Cells(31, 2), Cells(31, 6))
6 .SetSourceData Source:=Union(Ta, Ta2)
7 .HasTitle = True
8 .ChartTitle.Text = “項目別支出"
9 .SeriesCollection(1).ApplyDataLabels ShowPercentage:=True, ShowValue:=False
10 End With
11 End Sub

 

実行結果は以下のようになります。

Union関数はグラフを作るときによく使われます

 

union関数とRangeのちょっとした違い

 

union関数はRangeよりいっぱい合体できる!!

Rangeの()内の文字数は255文字以内、unionの()内のRangeは30個以内、というそれぞれ制限があります。この制限を考慮し、セルを最大限結合するには以下のようにします。

255文字記載したRangeをunionで30個記載する

255文字 × 30個 = 7650文字

union関数を使えば7650文字分の結合ができるので、Rangeよりはるかにセルを結合できることがわかります。選択したいセルが多くなりそうだなぁと思ったときはRangeではなく、Unionを使った方が安心でしょう。

 

VBA初心者が効率化マクロを導入する方法

 

VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!

このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。

 

こんな問題を解決する方法がこちら

  • マクロの開発を外注に依頼する
  • マクロが設定されたエクセルファイルをダウンロードする
  • 参考書やネットでVBAスキルを身に付ける

 

VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。

 

 

 

完成されたマクロを使ってエクセル業務を処理する

作業効率が2倍以上アップ!!

便利すぎて自分でもマクロを設定したいと考え始める

参考書やネットの情報でVBAスキルを身に付ける

マクロ開発を代行できる程のスキルを習得

 

 

 

VBAは

他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

という特徴があります。

 

毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。

 

マクロの開発を外注に依頼する

マクロの開発を外注に依頼する導入方法は

VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法

です。

 

「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」

こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

 

Left Caption

ガッツポーズの人

完成まで本業に集中できるので効率的

 

 

デメリットは、費用がかかることだけ。

開発内容、依頼先によってかかる費用は大きく異なります。

私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

 

Left Caption

疑問がある人

ちょっと高くない。。。

 

ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。

開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、

費用が安い!スピード納期!!

でやらせてもらっています。

 

ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。

 

ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。

 

 

マクロが設定されたエクセルファイルをダウンロードする

VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。

 

たとえば、

A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、

『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。

 

実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

写真貼付けマクロの使い方を示したイラスト

 

 

Left Caption

ガッツポーズの人

写真貼付け作業の効率がめちゃくちゃアップ

 

 

『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、

VBA初心者でもマクロを導入できる、費用が安い、

というメリットがあります。

 

しかし

VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい

というデメリットもあります。

 

Left Caption

ガッツポーズの人

お目当てのマクロが見つかればラッキー

 

個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。

 

今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。

 

 

 

参考書やネットでVBAスキルを身に付ける

先程も紹介しましたが、

VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

プログラミングです。

 

言い換えると、

情報量が豊富なので自分で勉強できちゃう

ということです。

 

私のVBAスキルはほとんど独学で身に付けたもので、

考えた処理のほとんどをVBAで表現できるレベルにまで到達した!

と思っています。

 

私の作ったマクロをプロのプログラマーが見れば、

お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!

と感じるはずです。

 

でも、

私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?

 

独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、

業務内容に合ったマクロを開発できるようになれます。

 

独学でVBAスキルを身に付けるコツは、

エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる

です。

 

とは言っても、全くの知識0の方は何をすればいいかわからないですよね。

 

VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。

 

VBAの知識0の方でもすいすい読み進められる内容になっています。

やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。

 

実際に私はこの参考書を読んでからVBAの勉強を始めました。

 

Left Caption

ひらめく人

VBA学習スタートのきっかけをくれた参考書


 

 

VBAの魅力を発見した後は、

ひたすら自動化したい処理を実現するコードを書くだけ

です。

 

【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。

 

実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると

自然といろんなマクロが作れるようになっているはずです。

 

VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。