You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改VLOOKUP自定义函数以提取Excel紫色标记的Comments?

修改VLOOKUP UDF以提取Excel紫色标记的Comments(线程注释)

原代码仅支持提取Excel旧版的红色标记“备注”(对应VBA里的Comment对象),而你需要的紫色标记“批注”是Excel新版的线程注释(对应ThreadedComments集合)。以下是修改后的代码,可同时兼容提取两种注释:

Function VlookupComment(LookVal As Variant, FTable As Range, FColumn As Long, FType As Long) As Variant
'Updateby Extendoffice / Modified to support Threaded Comments
    Application.Volatile
    Dim xRet As Variant 'could be an error
    Dim xCell As Range
    xRet = Application.Match(LookVal, FTable.Columns(1), FType)
    
    If IsError(xRet) Then
        VlookupComment = "Not Found"
    Else
        Set xCell = FTable.Columns(FColumn).Cells(1)(xRet)
        VlookupComment = xCell.Value
        
        With Application.Caller
            '先清除目标单元格已有的注释/批注
            If Not .Comment Is Nothing Then .Comment.Delete
            If .ThreadedComments.Count > 0 Then .ThreadedComments.DeleteAll
            
            '处理旧版红色备注(Comment对象)
            If Not xCell.Comment Is Nothing Then
                .AddComment xCell.Comment.Text
            End If
            
            '处理新版紫色线程批注(ThreadedComments集合)
            If xCell.ThreadedComments.Count > 0 Then
                .AddCommentThreaded xCell.ThreadedComments(1).Text
            End If
        End With
    End If
End Function

关键改动说明:

  • 新增了对ThreadedComments集合的判断,这是Excel新版紫色批注对应的对象
  • 提取线程批注时取集合中第一条的文本(ThreadedComments(1).Text),因为线程批注支持多条回复,这里默认取原始批注内容
  • 增加了清除目标单元格已有线程批注的逻辑(.ThreadedComments.DeleteAll),避免重复添加
  • 保留了对旧版Comment对象的兼容,确保两种注释都能被提取

内容的提问来源于stack exchange,提问作者MarkBEdwards

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:24:32