C# Excel.Range.Find使用长度超过255个字符的字符串
我正在Excel中存储每个1023个字符的字符串。稍后,我需要能够搜索excel文件并找到值所在的行。我可以保证我要查找的字符串在工作簿中的某个地方只出现一次 目前,每次尝试搜索时都会出现类型不匹配错误(由于find函数的长度限制为255)。当我用“teststring”这样的短字符串替换搜索字符串时,它工作得很好。如何在Excel中搜索1023字符串C# Excel.Range.Find使用长度超过255个字符的字符串,c#,excel,C#,Excel,我正在Excel中存储每个1023个字符的字符串。稍后,我需要能够搜索excel文件并找到值所在的行。我可以保证我要查找的字符串在工作簿中的某个地方只出现一次 目前,每次尝试搜索时都会出现类型不匹配错误(由于find函数的长度限制为255)。当我用“teststring”这样的短字符串替换搜索字符串时,它工作得很好。如何在Excel中搜索1023字符串 foreach (string missingItem in missingItems) { Range currentFind = n
foreach (string missingItem in missingItems)
{
Range currentFind = null;
foreach (Worksheet searchSheet in oWB.Worksheets)
{
Range lookAtRange = (Range)searchSheet.get_Range ("A1", "F20");
currentFind = lookAtRange.Find (
missingItem,
Missing.Value,
XlFindLookIn.xlValues,
Missing.Value,
Missing.Value,
XlSearchDirection.xlNext,
false,
false,
Missing.Value);
if (currentFind != null)
{
Range deleteRow = (Range)searchSheet.Rows[currentFind.Row];
deleteRow.Delete (XlDirection.xlUp);
break;
}
}
}
简言之,如果前255个字符的所有字符串都是唯一的,那么就不必担心其他字符了
在对字符串执行查找之前,只需截断该字符串:
missingItem = Left(missingItem,255)
或者:
missingItem = Right (missingItem,255)
否则,如果前255个字符有许多重复项,您可以将字符串除以255,然后取整,然后将原始字符串拆分为单独的字符串,单独搜索,这对您有帮助吗
编辑:
或者,以下是如何检查字符串中某个范围内每个单元格的等效性:
Sub FindIt()
暗淡单元格作为范围
将搜索字符串设置为字符串
对于范围内的每个单元格(“A1:D500”)
如果单元格.Value="JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJWKJEFLKNEWEOIFNOWEINWOINWOINWOINWOINWONDDDDDDDDDDDDdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd“那么‘我要寻找的值是唯一的ID,我需要匹配所有1023个字符。我可以得到前255个字符的所有匹配的位置,然后检索值并搜索这些字符,但这似乎效率极低。我现在就用这个,但我希望有更优雅的东西。如果它们完全一样,你可以忘记。找到并检查每个单元格是否匹配missingItem。在我看来,“查找”更多的是用于快速搜索特定单词,而不是检查事物之间的等效性。前255个字符可能相同,但可能不同。我不知道。我将有一个我正在寻找的ID,其中有1到1000个ID分布在几个工作表之间。这就是为什么我希望find函数会有一些用处。我会使用一个自定义的find函数,比如edit中的函数。显然,出于您的目的,您可能希望返回Cell.Row,而不是返回Cell.Address。
Sub FindIt()
Dim Cell As Range
Dim SearchString As String
For Each Cell In Range("A1:D500")
If Cell.Value = "dqwlokjdowqijowqijdoinowiqhdoiwqiophiruegnqpiunrgpiuqgnrgkjffndskfiougpiodghiudhfgtothisansdfldkjflsdffjlksdjflksjfdoiejwfoiwjeoinfoinewoifjwoiejfoiwejfoiwejfoijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjwerkjwelkfjwelkjflkwejlfkjwelkjflwkjeflknweoifnoweinfoinewfoinoifwnwoienfoinweoddddddddddddddddddddddddddddddddddddddddfinwoioiefldkjsfoijoneiojfoijfewwefweeeeeeeeeeeefwef" Then '<< use "Like" for wildcards in If-Then statements
MsgBox "An ''it'' was found at " & Cell.Address & " (" & Cell & ")"
End If
Next Cell
End Sub