2013-03-27 71 views
1

我有一个电子表格的循环,其中已经有一些代码。基本上在VBA我想要做的是:在excel中跳过包含搜索字符串的行VBA

If x = Searchstring.row then GoTo continue(未定义)

我目前使用If x = activecell.row GoTo continue,但是当我到一个新行的老小区更新信息添加其中包括搜索字符串行(因为它不再是ActiveCell.row

下面是我使用的代码(抱歉,这是一个有点乱):

Function RelLookup(ByVal Searchstring As String, Reldate As String, _ 
       SearchRange As Range, TicketRange As Range, ReldateRange As Range, _ 
       RelRange As Range, Optional UniqueOnly As Boolean = True) 

Dim X As Long, Task As String, ReldateVal As String, TicketVal As String, ReturnRel As String, _ 
Result As String 

For X = 1 To SearchRange.Count 
If X = ActiveCell.row Then GoTo Continue 


Task = SearchRange(X).Value 
ReldateVal = ReldateRange(X).Value 
TicketVal = TicketRange(X).Value 
ReturnRel = RelRange(X).Value 

If (Task = Searchstring) And (ReldateVal = Reldate) Then 
Result = Result & " Rel " & ReturnRel & " (" & TicketVal & ")" & " &" 
End If 

Continue: 
Next X 

If Len(Result) > 0 Then RelLookup = Left(Result, Len(Result) - 2) 


End Function 
+1

的更容易或更可靠的方法......我不会明白你的意思是**“,但是当我添加一个新的单元格时,旧的单元格将被更新,其中包括搜索字符串行(因为它不再是activecell.row)”** - 何时添加新的单元格?您的问题会如何发生?......您能否详细解释您所面临的具体问题? – 2013-03-27 13:43:56

+0

对不起,desc不是100%清晰,我的意思是“..当我添加新行”电子表格每次有新版本时更新。该公式的原因是要查找包含与公式中使用的搜索字符串相同的搜索字符串的发布,并且由于有超过900行,500个发布和80个不同的任务,因此可能会耗费大量时间。但是,例如公式会输出: Rel 400依赖于Rel 3 ##,Rel 400,Rel 5 ##等。我希望它忽略400(因为当然,Rel 400显然依赖于Rel 400)。 希望这给了一点细节。 – DTM 2013-03-27 15:47:35

+0

所以,如果我正确理解你的问题(而且我很可能不会),你的意思是我的'ActiveCell'在技术上是包含'SearchString'的单元?否则,我在这里仍然有点困惑... – 2013-03-27 16:10:45

回答

0

我已经找到了解决办法是罚款,这种情况下(感谢h @John Bustos的elp)。我添加了一个名为“RowNumber”的Integer。然后我已经改变了VBA读取If x = RowNumber GoTo Continue 虽然我现在有冗长式

=RelLookup(E955,Row(E955),"Not Rel",E:E,B:B,I:I,A:A,"") 

的整数ROWNUMBER由行(E955)的值来确定。

我会离开的情况下,开放式的问题有这样做不引入另一个字符串(虽然我不认为它周围的一个更基本的方式)

相关问题