excel 根据相应单元格的字体提取单元格的值[关闭]

s3fp2yjn  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(131)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
6天前关闭。
Improve this question
我想找到一个函数,它可以查看Excel中的列表并检查每个红色字体的单元格-然后给予我该客户的ID(来自同一表中的相应列表)。在某种程度上,它应该就像vlookup/xlookup -但查找值是单元格的字体颜色。
我正在寻找一种方法来做到这一点-或者写一个vba函数来做到这一点。我真的是新的vba -并会感谢任何帮助你可以给予:)
我试着使用chatgpt,并在网上寻找解决方案-但无济于事。.

chat gpt代码如下:

Function VLOOKUPbyFontColor(lookup_value As Range, lookup_range As Range, column_index As Long, Optional exact_match As Boolean = True) As Variant
    
    Dim cell As Range
    Dim lookup_color As Long
    
    lookup_color = lookup_value.Font.ColorIndex
    
    For Each cell In lookup_range
        If cell.Font.ColorIndex = lookup_color Then
             VLOOKUPbyFontColor = cell.Offset(0, column_index - 1).Value
             Exit Function
        End If
    Next cell
    
    If exact_match = False Then
        For Each cell In lookup_range
            If cell.Font.ColorIndex = lookup_color Then
                VLOOKUPbyFontColor = cell.Offset(0, column_index - 1).Value
                Exit Function
            End If
         Next cell
    End If
    VLOOKUPbyFontColor = CVErr(xlErrNA)
End Function

但是这个函数的输出最终是红色字体单元格的值,而不是相应的单元格的值--而且它并不总是有效。.

kuhbmx9i

kuhbmx9i1#

Public Function ShowRedFontID(rg As Range, col As String)
Application.FindFormat.Font.Color = 255
With rg
    Set c = .Find(What:="", SearchFormat:=True)
    If Not c Is Nothing Then
        fa = c.Address
        Do
        Set c = .Find(What:="", after:=c, SearchFormat:=True)
        MsgBox c.Value & " ID is " & Cells(c.Row, col)
        Loop While c.Address <> fa
    End If
End With
End Function

它使用find方法。因此,它不会检查区域中的每个单元格的值是否为红色字体,而是在区域中查找值为红色字体的单元格。当它找到单元格时,它将获取单元格值,同时获取列的引用字符串,并显示在消息框中。
要调用函数:

Sub test()
Call ShowRedFontID(Columns(1), "B")
End Sub

上面的子程序将搜索A列中具有红色字体值的单元格,然后在找到的单元格的行的B列中获取ID。
请注意,子必须在数据所在的活动工作表上运行。

相关问题