セルが太字かどうかの判別(Microsoft Excel)
ケンは、セルの内容が太字であるかどうかを示すワークシート関数があるかどうか疑問に思います。彼はISBLANKなどの他の情報関数を見つけることができますが、セルが太字であるかどうかを示す関数を見つけることができません。
Excelに組み込まれているISBOLD関数はありません。マクロを使用せずにこれを行う非常に難解な方法がありますが、Excelの一部のバージョンでのみ機能します。たとえば、Microsoftがついにサポートを削除したように見えるため、このアプローチはOffice365では機能しないようです。 GET.CELLと呼ばれるこの古いExcel4関数は、いくつかの古いバージョンのExcelで動作します。数式での使用方法は次のとおりです。
=IF(GET.CELL(20,A1), "Bold", "Not Bold")
少なくともセルの最初の文字が太字の場合、GET.CELL関数はTrueを返します。
より良いアプローチは、ワークシートから呼び出すことができるユーザー定義関数をVBAで作成することです。このようなUDFの単純なバージョンは次のとおりです。
Function CheckBold(cell As Range) As Boolean Application.Volatile CheckBold = cell.Font.Bold End Function
ワークシートで使用するには、次のようにします。
=IF(CheckBold(A1), "Bold", "Not Bold")
CheckBold関数は、ワークシートが再計算されたときにのみ更新されます。セルA1に太字の書式を適用したり、セルA1から削除したりした場合は更新されません。
このアプローチはほとんどの場合に機能しますが、Boldプロパティには、実際にはTrue、False、およびNullの3つの可能な設定があることを理解してください。セル内のどの文字も太字でない場合、プロパティはFalseに設定されます。すべて太字の場合はTrueに設定されます。最後に、セル内の一部の文字のみが太字の場合はNullに設定されます。この状況に遭遇する可能性があると思われる場合は、CheckBold関数を変更する必要があります:
Function CheckBold(cell As Range) As Integer Dim iBold As Integer Application.Volatile iBold = 0 If IsNull(cell.Font.Bold) Then iBold = 2 Else If cell.Font.Bold Then iBold = 1 End If CheckBold = iBold End Function
関数が0から2までの値を返すことに注意してください。0を返す場合、セルに太字はありません。 1を返す場合、セル全体が太字になります。 2が返される場合は、セルに部分的な太字があります。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(13733)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。