【发布时间】:2013-03-27 09:56:43
【问题描述】:
我有一个电子表格循环,其中已经有一些代码。基本上在 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
【问题讨论】:
-
...我不明白您所说的 是什么意思,但是当我添加一个新单元格时,旧单元格会更新,其中包括搜索字符串行(因为它不再是活动单元格。 row)" - 何时添加新单元格?您的问题是如何出现的??...您能否更详细地解释一下您面临的具体问题?
-
抱歉,描述不是 100% 清晰,我的意思是“..当我添加新行时” 每次有新版本时,电子表格都会更新。该公式的原因是查找包含与公式中使用的搜索字符串相同的搜索字符串的版本,并且由于有超过 900 行、500 个版本和 80 个不同的任务,这可能会很耗时。但例如公式将输出:Rel 400 依赖于 Rel 3##、Rel 400、Rel 5## 等。我希望它忽略 400(因为,当然,Rel 400 显然依赖于 Rel 400 )。希望这能提供更多细节。
-
所以,如果我正确理解了您的问题(我很可能不会),您的意思是我的
ActiveCell从技术上讲是包含SearchString的单元格?不然我这里还是有点糊涂…… -
活动单元格是其中包含公式的单元格,但是由于它与搜索字符串位于同一行,因此 activecell.row 意味着它将忽略该行,但我需要它始终忽略该行不只是在它处于活动状态时。 (我认为 activecell.row 会起作用,但它不起作用)
-
@JohnBustos 如果有办法找到搜索字符串所在的行,这将解决问题。例如如果我的搜索字符串在 E952 中,row = 952 等等......如果它是一个自己的字符串会更容易吗?