首页 > 解决方案 > 将单元格移动到满足条件的特定工作表

问题描述

我想创建一个将单元格行移动到特定工作表中的 VBA。基本上将所有数据都放在一个工作表上,并将行复制到它所属的工作表中。

数据截图

标识符是发票编号中连字符前的前两位数字。

例如,

发票编号以“1-”开头的每一行都将粘贴到工作表 2

发票“3-”将被粘贴到表 3...等

我能够找到一些可以工作的代码行,但是我很难找到正确的代码来读取连字符之前的数字。

Private Sub CommandButton1_Click()
a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To a

If Worksheets("Sheet1").Cells(i, 1).Value = "1-" Then

    Worksheets("Sheet1").Rows(i).Copy
    Worksheets("Sheet2").Activate
    b = Worksheets("Sheet2").Cells(b + 1, 1).Select
    ActiveSheet.Paste
    Worksheets("Sheet1").Activate

End If
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).Select
End Sub

大约有 16 个不同的发票号码标识符,所以我将有 16 个不同的表,它也会粘贴它。

标签: excelvba

解决方案


定义这个:

Dim dashpos As Long

如果我输入了错误的信息,请在根据您的数据复制之前添加此行。这会将数据放在左侧,-您可以将其放入所需的工作表中。左侧的数字将被提取并放入第 4 列,然后您可以在那里比较数字。

dashpos = InStr(1, Cells(i, 1), "-")
Cells(I, 4).Value = Left(Cells(i, 1), dashpos - 1)

推荐阅读