【问题标题】:How to see if value already exists there by row by row?如何逐行查看值是否已经存在?
【发布时间】:2017-09-22 16:46:06
【问题描述】:

宏之前:

第 1 列|第 7 栏

PHRT1S | TEST_TEST_TEST_TEST

MacrO 之后:

第 1 列 |第 7 栏

PHRT1S | TEST_TEST_TEST_TEST(PHRT1S)

但是,如果没有附加ID,只是随机的()存在,宏会跳过if there is ()的逻辑原因。

理想情况下,我希望为以下场景做好准备:

宏之前

第 1 列 |第7栏

PHRT1S | TEST_TEST_TEST(TEST)

宏之后

第 1 列 |第7栏

PHRT1S | TEST_TEST_TEST(TEST)(PHRT1S)

如果第 1 列的值已经存在,则跳过将第 1 列的值附加到第 7 列,而不是仅通过单个括号来标识该值。

我的宏如下:

With xlSheet


    LastRow = xlSheet.UsedRange.Rows.Count
    Set target = .Range(.Cells(15, 9), .Cells(LastRow, 9))
    values = target.Value

    Set ptype=.Range(.Cells(15,6),.Cells(LastRow,6))
    pvalues=ptype.Value

    For i = LBound(values, 1) To UBound(values, 1)
    'if Statement for test keywords
    If InStr(1,pvalues(i,1),"Package")= 0 AND InStr(1,pvalues(i,1),"Roadblock")= 0 Then 
    If InStr(1,values(i,1),"(")=0 Then
    values(i, 1) = values(i, 1) & "(" & .Cells(i + 15 - LBound(values, 1), 3) & ")"
    End If 
    End If
    Next
    target.Value = values
End With

【问题讨论】:

  • 这不适合你吗? If Instr(values(I,1),.Cells(i + 15 - LBound(values, 1), 3)) = 0 Then,意思是确保类型尚未添加,而不是寻找括号。
  • 它有效!谢谢。
  • 那很容易。 :-) 很高兴得到帮助。请接受我的答案。

标签: vba excel


【解决方案1】:

这不适合你吗? If Instr(values(I,1),.Cells(i + 15 - LBound(values, 1), 3)) = 0 Then,意思是确保类型尚未添加,而不是寻找括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2020-07-15
    相关资源
    最近更新 更多