0
我花了数小时试图找出解决此问题的最佳方法,但我没有解决方案。我试过循环,使用InStr,条件格式w /通配符,但结果从来没有我想要的。利用InStr比较两列
我有两列值,一个是我想要搜索的值,另一个是长字符串,我的值可能坐在任何地方,因此我需要通配符。我想要做的是采取长字符串列的第一行,并将其与较短值的列中的每个值进行比较。如果没有短值的长字符串被发现,与长串删除该行并移动到下一个...
我想我已经将其设置是这样的:
For i = 1 to lastrow,
If InStr(longvalue, shortvalue) Then
' Break loop to next i?
Else
If i = lastrow
longvalue.EntireRow.Delete
End If
End If
Next i
任何帮助,将不胜感激......一直拉着我的头发在这一个。再看看,我想我需要2个循环,第一个循环遍历所有的短数值和单个较长的值,然后在它们全部循环后,转到下一个更长的值。
编辑:本端:
i = 6
j = 2
Set sht = ThisWorkbook.Worksheets("SM Summaries")
lastrow = sht.Cells(sht.Rows.Count, "C").End(xlUp).Row
reallastrow = lastrow + 1
For i = 6 To reallastrow
For j = 2 To 82
If InStr(ActiveWorkbook.Sheets("SM Summaries").Range("C" & i).Value, ActiveWorkbook.Sheets("SM Reference Sheet").Range("H" & j).Value) Then
Exit For
Else
If j = 82 Then
ActiveWorkbook.Sheets("SM Summaries").Range("C" & i).EntireRow.ClearContents
End If
End If
Next j
Next i
感谢马特!我只是想出了它。与第一部分代码几乎相同的答案。我正在通过循环向前迈进,并使用clearcontents而不是deleterow,因为在我的代码结束时,我删除了所有的空白和重复,并且它们全部向上移动。无论什么作品! – dwirony
好的。好。由于代码更加简洁,也可以使用'Find'进行试验。尽管如此,恭喜你搞清楚了。 –
因此'Find'会自动使用通配符,所以即使我的值是一个更大字符串中的子字符串,它会通过? – dwirony