当列标题与列表匹配时更新单元格

问题描述 投票:0回答:1

我不是 Excel VBA 方面最出色的人,但了解得足够危险了。

我有 Sheet1,其中包含应用程序 ID(A)、状态(B)和自由文本字段(C)的记录,我们用于注释,可以有多个回车符或没有回车符。

Sheet2 包含标志名称列(columnA)和部分文本(columnB),需要与 Sheet 1 注释(columnC)匹配

我有代码从报告创建工作表 1,然后从工作表 2 的 A 列中获取列表,并将它们用作工作表 1 中的标题。

我有一些代码,用于检查 Sheet 2 中 B 列中的文本的任何部分是否存在于 Sheet1 中的 C 列中,如果存在,则将 Sheet1 中的 D 列标记为“1”。该代码有效,但我需要匹配表 1 中的列名称并更新相应的列/标志。我附上了图片来帮助展示我需要什么,下面是我迄今为止的代码。

Sub Test()

Dim w1 As Worksheet
Dim w2 As Worksheet
Dim c As Range
Dim r As Range

Application.ScreenUpdating = False

Set w1 = Worksheets("sheet1")
Set w2 = Worksheets("sheet2")

For Each c In w2.Range("B2", w2.Range("B" & Rows.Count).End(xlUp)) 'loop through B
    Set r = w1.Columns(3).Find(What:=c.Value, LookIn:=xlFormulas, Lookat:=xlPart, MatchCase:=False, SearchFormat:=False)
    If Not r Is Nothing Then  'found in B
        w1.Range("E" & r.Row).Value = 1 'Update value to 1 if found.
    End If
Next c

Application.ScreenUpdating = True
    
    End Sub

excel vba
1个回答
0
投票

使用公式怎么样?

如果您使用公式,您可以将新的触发文本附加到工作表 2,并且工作表上的矩阵会自动更新。

我简化了你的数据 - 但公式本身应该很清楚:

=IF(SUMPRODUCT((tblConfig[NI Reason]=D$1) * ISNUMBER(SEARCH("*" & tblConfig[Trigger Text] & "*",$C2))),"x","")
© www.soinside.com 2019 - 2024. All rights reserved.