- ベストアンサー
太字に設定されているセルの個数を求めたい
数式だけで、太字に設定されているセルの個数を求めたいのですが、 可能でしょうか? イメージとしては下記のようなものです。 ○=太字に設定されているセルと仮定 A B C D 1○ × ○ × 太字は2個 2○ ○ ○ × 太字は3個 3× × × ○ 太字は1個
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
数式(関数)では、書式情報を調べることはできません。 VBAを使用する必要があります
その他の回答 (3)
- ka_na_de
- ベストアンサー率56% (162/286)
#3です。 4.0マクロを使う方法もあります。 「但し、4.0マクロがいつまでサポートされるかは不明で、遠くない将来に使えなくなってしまう可能性があることはご承知おきください。」 だそうです。 以下のキーワードでWeb検索すれば、いろいろ情報が得られます。 Excel 4.0 マクロ GET.CELL 関数 太字
- ka_na_de
- ベストアンサー率56% (162/286)
おはようございます。 ユーザー定義関数による方法の一例です。 注)セル内の文字が全て太字の場合のみ対応してます。 セル内の一部の文字が太字の場合はカウントしません。 '==========標準モジュールに記述================= Function CountFontBold(argRng As Range) As Long Dim c As Range Dim buf As Long Application.Volatile buf = 0 For Each c In argRng If c.Font.Bold = True Then buf = buf + 1 End If Next c CountFontBold = buf End Function '==========使い方================================ ' A1:D1の範囲で太字に設定されているセルの個数は ' =CountFontBold(A1:D1) '以下はおまけです。 '上記の関数では、どこかのセルが再計算されないと実行されません。 'そこで、以下も記述しておけば、セルを太字に変更し、セルの選択範囲を移動した時点で再計算→上記関数の実行ができます。 '=============シートモジュールに記述======================= Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode = False Then ActiveSheet.Calculate End If End Sub
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようなマクロで対応することになるでしょう。 E列に太字のセルの個数を表示させます。 Sub 太字判定() Dim RowPos As Integer Dim ColPos As Integer Dim i As Integer m = Range("A65536").End(xlUp).Row For RowPos = 1 To m For ColPos = 1 To 4 If Cells(RowPos, ColPos).Font.Bold = True Then i = i + 1 End If Next Cells(RowPos, 5).Value = i i = 0 Next End Sub
お礼
ありがとうございます。