【问题标题】:Increment row in search code Excel Vba搜索代码Excel Vba中的增量行
【发布时间】:2016-11-14 10:20:12
【问题描述】:

我被困在我的 vba 不会增加行号的问题上。我的表看起来像: 工作表1

name value  
aa  11  
bb  12  
cc  13  
aa  14  
cc  15  
cc  16  
aa  17  
bb  18  
aa  19  

表 2

name
aa
bb
cc

我需要搜索每个特定值,如果找到将相邻单元格复制到 sheet2 就在下一个搜索值。这是代码,但问题在于行增量,所有搜索的值都在一行中(变量 k 不起作用)。

Sub finall()
Dim cable As String
Dim finalrow1 As Integer
Dim finalrow2 As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
l = 2
k = 2
finalrow2 = Sheets("Sheet2").Range("A1000").End(xlUp).Row
finalrow1 = Sheets("Sheet1").Range("A1000").End(xlUp).Row
For j = 2 To finalrow2
    cable = Sheets("Sheet2").Cells(j, 1).Value
    For i = 2 To finalrow1
        If Cells(i, 1) = cable Then
            Sheets("Sheet1").Cells(i, 2).Copy
            Sheets("Sheet2").Cells(k, l).End(xlUp).Offset(1, 0).PasteSpecial
            l = l + 1
        End If
    Next i
    k = k + 1
Next j
End Sub

这只是最终的示例,我想将此代码应用于具有 50-60k 行的表。

最终表格应如下所示:

name                
aa  11  14  17  19
bb  12  18      
cc  13  15  16  

谢谢

【问题讨论】:

  • 试试:Sheets("Sheet2").Range("A" & Sheets("Sheet2").Rows.Count).End(xlUp).Row
  • 抱歉,帖子已更新。我应该在哪里添加您建议的代码。我是excel vba的新手。 TY
  • 看看这一行:finalrow2 = ...finalrow1 = ...
  • 请检查我的编辑。如果它看起来不错,请将其标记为答案

标签: excel vba increment


【解决方案1】:

最终代码如下

Sub finall()
    Dim cable As String
    Dim finalrow1 As Long
    Dim finalrow2 As Long
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim l As Long
    l = 2
    k = 2
    finalrow2 = Sheets("Sheet2").Range("A1000").End(xlUp).Row
    finalrow1 = Sheets("Sheet1").Range("A1000").End(xlUp).Row
    Worksheets("Sheet2").Select
    For j = 2 To finalrow2
        cable = Sheets("Sheet2").Cells(j, 1).Value
        For i = 2 To finalrow1
            If Sheets("Sheet1").Cells(i, 1) = cable Then
                Sheets("Sheet1").Cells(i, 2).Copy
                Sheets("Sheet2").Cells(k, l).PasteSpecial
                l = l + 1
            End If
        Next i
        k = k + 1
        l = 2
    Next j
End Sub

工作证明

【讨论】:

  • 非常感谢。代码工作正常,但有一个问题。值 16 属于 cc 而不是 bb :/
  • 太棒了,像魅力一样工作。谢谢你。我将把它应用在大桌子上。 :)
  • 也许还有一个问题,如果我增加“finalrowX”定义中的范围(比行数多一点),我会得到“溢出”错误,大表有 55149 行(Sheet1)和 42168唯一值(sheet2)。有什么办法可以覆盖它吗?再次感谢
  • 试试finalrow2 = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Rowfinalrow1 = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
  • 我做到了,但仍然存在溢出问题,如果我将 finalrow1、finalrow2、i 和 j 变量从整数更改为 long,程序启动但之后 if 将冻结:(
猜你喜欢
  • 1970-01-01
  • 2017-09-27
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
相关资源
最近更新 更多