太字のデータを抽出、ExcelVBA
ExcelVBA マクロ講座 76回
ワークシートのオートフィルターに太字はない
オートフィルターは条件でデータを抽出できる便利な機能です。
なんでもできるような気がしますが、データに書式が設定してあり、その書式がフォントを太字にするという場合など、
太字のデータだけを抽出しようと思ってもできません。
でも、少し柔軟に考えてみましょう。結果として太字データだけ抽出、あるいは除外して抽出できればいいのです。ちょっとマクロを知っていれば、簡単にできてしまいます。
(コードはコピーペーストで使ってください。)
【手動でやる場合】作業列を用意する
1.作業列を用意すると言っても、特別なことではなく、データと区別ができる1列を利用するだけです。 の行と同じ
2. この列に一つ隣のデータが太字であるかどうかの判定結果を表示することにしましょう。 太字であるなら、True,そうでないときはFalseのように表示します。
3. Excel関数の中に、IS関数という変数や式の状態をチェックする関数群があります。ISBLANK関数、ISNUMBER関数などです。 この中には、太字かどうかを判定する関数はありません。
作業列を作っても、結局太字かどうかは、目視によって、チェックを入れる必要があります。大変ですね。
【ユーザー定義関数を作る】太字であるかどうかの判定をする関数
4. しかし太字であるかどうかの判定結果を手動でやるのは、これもまた大変です。
簡単なユーザー定義関数をさくっと作成してしまいましょう。
このままコピーして使えます。コピーなら3秒後には使えますね。
引数はCellで、型はRangeです。戻り値はブール型 (Boolean)です。 As Booleanを省略しても大丈夫です。
Function IsBold(Cell As Range) As Boolean IsBold = Cell.Font.Bold End Function
ISBOLD関数を使ってみる
5. D2セルに”=IS”と入力すると、頭にISのつく関数が表示されます。作成したユーザー定義関数「ISBOLD」もちゃんと表示されます。
6. D2セルに”=ISBOLD("B2)”と入力して、下方向にコピーします。
7. 作業列を含めた選択範囲にフィルターを設定します。
8. 作業列にフィルターをかけます。太字を抽出したい場合は、TRUEにチェック、太字以外を抽出したい場合は、FALSE にチェックをいれます。
9. 太字のデータだけを抽出しました。