我想创建一个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种不同的工作表也将粘贴它。
答案 0 :(得分:0)
定义此:
Dim dashpos As Long
如果我输入的信息有误,请先添加此行,然后再根据您的数据进行复制。这将使数据位于-
的左侧,您可以将其放在所需的工作表中。将提取左侧的数字并将其放在第4列中,然后您可以在此处进行比较。
dashpos = InStr(1, Cells(i, 1), "-")
Cells(I, 4).Value = Left(Cells(i, 1), dashpos - 1)
答案 1 :(得分:0)
基于Snehil所说的内容,尝试使用此方法:
Private Sub CommandButton1_Click()
a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Dim dashpos As Long
For i = 2 To a
dashpos = InStr(1, Cells(i, 1), "-")
Cells(i, 4).Value = Left(Cells(i, 1), dashpos - 1)
If Worksheets("Sheet1").Cells(i, 4).Value = "1" Then
Worksheets("Sheet1").Rows(i).Copy
Worksheets("Sheet2").Activate
b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
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
我认为您在定义“ b”时出错,请参见上面的建议。
答案 2 :(得分:-1)
您是否考虑过将其变成表格,然后仅使用高级查询来移动数据?有必要为此使用VBA吗?