肯想知道是否有一个工作表函数将指示单元格的内容是否为粗体。他可以找到其他信息功能,例如ISBLANK,但找不到可以指示该单元格是否为粗体的功能。

Excel中没有内置的ISBOLD函数。有一种非常神秘的方法可以执行此操作而无需使用宏,但是它仅适用于某些版本的Excel。显然,举例来说,这种方法不适用于Office 365,因为微软似乎最终删除了对该方法的支持。这个旧的Excel 4函数称为GET.CELL,将与某些旧版本的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。如果单元格中的所有字符都不为粗体,则将该属性设置为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_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13733)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。