目次
- 罫線の「困った!」が生じたら“どのセルの上または下に引いたのか”をまず考える
- 重複しないワードを表から抽出したい場合は「データの取得と変換」が強い味方に
- 「セルの中の特定の文字列だけ、色付けしたい」ときの簡単なマクロ
- 「If Then Else」と「Select Case」の違いは「〇〇」
2021.08.01
Excelで仕事を効率化・スピードアップさせた。
こんな話を聞くと「便利そう!」「自分もやってみたい」と感じると同時に「難しそう……」という思いも湧いてくるのではないでしょうか?
Microsoftが優れた技術者へ授与するMCP(Most Valuable Professional)のExcel部門を日本人で初めて受賞した一般社団法人実践ワークシート協会代表理事、田中亨先生から毎月質問が寄せられたテーマにまつわるExcelテクニックが教えられるSchooの人気授業シリーズ『みんなの悩みを華麗に解決 今月のExcelテクニック』。昨年放送された2020年11月のタイトルは「Excelのマクロ」です。
ついつい身構えてしまいがちなマクロの世界にも、田中先生のトークとデモつきで学べばすんなり入門することができるはず。この記事ではその授業の一部を抜粋してお届けします!
つづいては例となる表付きで送られてきた質問です。りんご、みかん、バナナ……と果物の名前が不規則に記載されている複数の列からなる表。そこからユニークな(重複しない)アイテムを抽出し、1列にまとめたいと相談者は考えているようです。
これはマクロでもできるが今回はあえて手動でやってみたと田中先生。「これ、意外と便利です」と太鼓判を押します。 そうして提示されたのが以下の表。田中、佐々木、広瀬……など人名が不規則に記入されています。
ここで使うのが「データ」タブの「データの取得と変換」機能です。世間一般では「Power Query」と呼ばれることの多いこの機能。しかし、先生はあえてExcelに表示されたままの名前で呼んでいるそうです。それは、その名前が機能を把握する意味で重要だから。
先生は名前がランダムに記載された範囲を選択し、「テーブルまたは範囲から」をクリックしました。すると、Power Queryエディターのウィンドウが呼び出されます。そのうち、変換タブに位置する「列のピボット解除」をクリック。すると、以下のように名前がすべて一列に並べられました。
ここから「ホーム」タブの「列の削除」で不要な属性列を、「行の削除」の「重複の削除」で重複している名前を削除します。あとは「閉じて読み込む」ボタンをクリックし、「データのインポート」ウィンドウで「テーブル」「既存のワークシート」にチェックを入れて「OK」を押せば、以下のとおり、相談者の望んでいた通りの表が表示されました。
「データの取得と変換」機能の応用性の高さには先生も目を見張ったということです。今後も要注目の機能といえるでしょう。
続いて取り上げられたのが「セルの中の特定の文字列だけ、色付けしたい」という受講生の相談。以下のようにDM・DMM・DDMといった文字列が含まれた文章がある場合、そのうち、「DM」の部分だけ一気に色を変えたいと相談者は考えているようです。ここで用いられるのが「マクロ」です。
特定の文字列の色を変える方法は簡単。色を変えたい部分を選択して「ホーム」タブの「フォントの色」ボタンをクリックするだけです。では、例えば以下のセルの「AB」の色だけを自動で塗り替えたいという場合はどうすればよいのでしょうか?
そこで田中先生が作成したのが以下のマクロコードです。
Option Explicit
Sub Macro1()
Dim Pos As Long, S As Long
Do
Pos = InStr(Pos +1, ActiveCell, Range(“B1”))
If Pos = 0 Then Exit Do
ActiveCell.Characters(Pos, Len(Range(“B1”))).Font.Color = 25!
Loop
End Sub
B1セルに「AB」と色を変えたい文字列名を入力し、上記のコードを実行した結果が以下の画像。見事に「AB」だけ色が変更されていますね。
「もしも『AB』は変えたい、でも『ABC』は変えたくないという場合は難易度が一気に変わります」と田中先生。その場合は「正規表現」という手法に頼ることになりそうですが、まずは今回のやり方を押さえてからネクストステップに進みましょう!
マクロの話題はさらに続きます。「VBAの分岐で存在する『if』と『case』の違いについて教えてほしい」という相談者。田中先生はこの質問に対し、まず「『case』じゃないです」と指摘。正式名称はそれぞれ『If Then Else』と『Select Case』です。
「VBAの条件分岐にはこの2つしかありません」と先生は語ります。条件分岐とは「条件によって処理を分岐する仕組み」のこと。そして、条件の分岐には以下の2つのパターンがあると田中先生。
1.Aなのか、そうでないか
2.Aなのか、Bなのか、Cなのか、Dなのか……
1はAかそうでないかの2値に分かれるのに対し、2はより細かく複数の条件に分岐しています。そして、1つめのパターンで使われるのが「If Then Else」、2のパターンで使われるのが「Select Case」なのです。
「If Then Else」にも「elseif」という3つ目のパターンを指定する方法は存在しますが、「上級者で『elseif』を使う人は一人もいません」と田中先生。「Select Case」を知っていれば、「elseif」を使う理由はないと断言できるのです。
また、例えば以下のように「A、B、C、A、B、C……」と一行目に記載されたワークシートの2行目に、「Aならば1」「Bならば2」「Cならば3」と対応させた数字を入力したいとします。この場合に使えるのが「SWITCH関数」。「=SWITCH(セル名,”A”,1,”B”,2,”C”,3)」と入力するだけで、Excelの機能を使って条件分岐を行わせることも可能です。
このように関数が追加され、できることが続々と増えているExcel。その世界をどんどん追及して“Excelマスター”を目指しましょう!
文=宮田文机
ペンシルからのプッシュ通知を設定しておくと、新着記事のお知らせなどをブラウザ上で受信できて便利です。
通知を受信しますか?
授業最初に取り上げられた質問は「行のタイトルを設定し、複数ページにわたって表示されるようにしたが、2ページ以降行のタイトル範囲の下線が消えてしまう」というもの。田中先生は「実際の画面を見ないと完全にはわからないですが」と前置きしつつ、罫線がセルの上に設定されているのか下に設定されているのかの違いが関係しているのではないかと推察しました。
罫線はセルに対し上に引くことも下に引くことも可能であり、例えば上図のB列とC列は一見まったく同じように見えますが、実際は2行目と3行目の間に惹かれた罫線がB列の場合はB2セルの下線として、C列の場合はC3セルの上線としてひかれているという違いがあります。そのため、D2セルをコピペするとB列の罫線は消えてしまいますが、C列の罫線はそのまま保持されます。“罫線が消えてしまう”という悩みを持つ方はまず、罫線をどのセルの上、または下に引いたのかを考えてみてください。