Vba 如果匹配,是否更改文本?

Vba 如果匹配,是否更改文本?,vba,excel,Vba,Excel,现在我从工作表1的B列复制数据 我想要它,这样它就不会复制它,如果它说已完成,它只会把它放在已完成的位置,如果它说未完成,它会把它放在未完成的位置。现在,它复制了我的额外信息旁边完成 With Sheets("Worksheet 2") .Range("B1").Formula = "=IF(ISERROR(VLOOKUP(A1,'WorkSheet 1'!A:B,2,0))," & """""" & ",VLOOKUP(A1,'Worksheet 1'!A:B,2,0)

现在我从工作表1的B列复制数据

我想要它,这样它就不会复制它,如果它说已完成,它只会把它放在已完成的位置,如果它说未完成,它会把它放在未完成的位置。现在,它复制了我的额外信息旁边完成

With Sheets("Worksheet 2")
    .Range("B1").Formula = "=IF(ISERROR(VLOOKUP(A1,'WorkSheet 1'!A:B,2,0))," & """""" & ",VLOOKUP(A1,'Worksheet 1'!A:B,2,0))"
    .Range("B1").Copy Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row)
End With

所以我认为这对你来说是可行的,但是如果它不能满足你的要求,请告诉我。另一方面,
iferror(…,“error value”)
if(iError(…,“error value”,…)
的一个很好的替代品。它使您不必两次键入测试条件

With Sheets("Worksheet 2")
    .Range("B1").Formula = "=IFERROR(IF(IFERROR(FIND(""Not Completed"",VLOOKUP(A1,'WorkSheet 1'!A:B,2,0)),0),""Not Completed"",IF(IFERROR(FIND(""Completed"",VLOOKUP(A1,'WorkSheet 1'!A:B,2,0)),""""),""Completed"","""")),"""")"
    .Range("B1").Copy Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row)
End With

你想让它说“完成”或“未完成”是什么意思?电子表格是什么样子的?你从中复制的单元格中的文本是否总是以“已完成”/“未完成”开头或者它们会出现在文本中的任何地方吗?这太神奇了,先生!这一切都很有效,但显然它在4000多行中有一些额外的信息,我没有看到。那么,如果它说完成了,那么它会显示y,如果它没有完成或者其他任何东西在那里,它只会显示n?是的,你可以这样做。的结构此公式的嵌套方式是,首先查找“未完成”,如果不存在,则检查“已完成”(否则对于此if语句,这两个值都为真)。最后,您希望其他任何值显示为“N”。因此,“N”必须在两个点中,而“Y”必须在一个点中。下面是实现此目的的公式:。范围(“B1”)。公式=“=IFERROR(如果)IFERROR(查找(“‘未完成’”,VLOOKUP(A1,‘工作表1’!A:B,2,0)),0),“N”,如果(如果)IFERROR(查找(“‘已完成’”,VLOOKUP(A1,‘工作表1’!A:B,2,0)),“),“Y”,“N”)”