首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA计数两次循环?

VBA计数两次循环?
EN

Stack Overflow用户
提问于 2015-08-05 22:23:53
回答 1查看 781关注 0票数 0

所以我有我的代码,它查看列I:L中的名称,如果条目与名称匹配,它会将该行列A的值粘贴到另一个表中。但是,如果一个名称在I:L的同一行中出现两次,它会将A列中的值粘贴两次。如果发生这种情况,我如何解决这个问题,使它只粘贴一次列A?谢谢!

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)Dim r As Range, Vin As Variant, Vout As Variant, i As Long, j As Long, ct As Long, S As Long
Set Target = Target(1)
If Not Intersect(Range("M3"), Target) Is Nothing Then
    Application.EnableEvents = False
    Set r = Range("I14:I59")
    r.ClearContents
    With Sheets("Master List").Range("I2:L1000" & Sheets("Master List").Cells(Rows.Count, 1).End(xlUp).Row)
        Vin = .Value
        ReDim Vout(1 To UBound(Vin, 1))
        For i = 1 To UBound(Vin, 1)
            For j = 1 To UBound(Vin, 2)
                If Vin(i, j) = Target.Value Then
                    ct = ct + 1
                     S = i + 1
                    Vout(ct) = Sheets("Master List").Range("A" & S).Value
                End If
            Next j
        Next i
    End With
    If ct > 0 Then
        ReDim Preserve Vout(1 To ct)
        r.Resize(ct).Value = Application.Transpose(Vout)
    End If
    Application.EnableEvents = True
End If
End Sub
EN

回答 1

Stack Overflow用户

发布于 2015-08-05 22:32:25

只要您一次只查找一个名称,那么只要找到它,您就可以简单地递增行计数器i

代码语言:javascript
复制
If Vin(i, j) = Target.Value Then
    ct = ct + 1
    S = i + 1
    Vout(ct) = Sheets("Master List").Range("A" & S).Value
    i = i + 1
End If
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31835270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档