我有一个零件编号列表,其中包含简短说明和详细说明。列表的格式是在第一列中有一个部件号。在第二列中有一个描述代码。在第三列中有描述。描述是基于前面的描述代码的名称,简短描述或长描述。
查看截图示例: Original Dataset
如您所见,某些部分有三个描述,其中一部分没有。
我正在尝试从工作表1中获取数据并将信息粘贴到具有合并且正确的行结构的工作表2中。部件号,名称,短,长。
请参见屏幕截图示例:New Dataset
以下是我一直在使用的一些代码。我觉得我很接近或至少在正确的轨道上,但它肯定不起作用,目前正在抛出一个没有错误。
Dim i As Long
For i = 1 To Rows.Count
With ActiveWorkbook
.Sheets("Parts List").Range("A1").Select
If .Sheets("Parts List").Cells(i, 1).Value = .Sheets("Product Description").Cells(i, 1) Then
If .Sheets("Product Description").Cells(i, 2).Value = "DES" Then
.Sheets("Parts List").Cells(i, 2).Value = .Sheets("Product Description").Cells(i, 2).Value
ElseIf .Sheets("Product Description").Cells(i, 2).Value = "EXT" Then
.Sheets("Parts List").Cells(i, 5).Value = .Sheets("Product Description").Cells(i, 2).Value
ElseIf .Sheets("Product Description").Cells(i, 2).Value = "MKT" Then
.Sheets("Parts List").Cells(i, 3).Value = .Sheets("Product Description").Cells(i, 2).Value
End If
Next i
End With
非常感谢任何和所有帮助。我真的只是试图让它循环通过这一张并提取东西并将它们放在另一张纸上。听起来很容易。
答案 0 :(得分:1)
我会对您的代码进行一些小的更改,主要是为了保留您在目标表上写入哪一行的计数器,以及相当多的外观变化:
Dim srcRow As Long
Dim dstRow As Long
Dim srcWs As Worksheet
Dim dstWs As Worksheet
Set srcWs = ActiveWorkbook.Worksheets("Product Description")
Set dstWs = ActiveWorkbook.Worksheets("Parts List")
dstRow = 9 'Initially point to the header row
'Only do your For loop for cells that contain a product code, rather than
'for the 1 million rows in the worksheet
For srcRow = 1 To srcWs.Range("A" & srcWs.Rows.Count).End(xlUp).Row
'.Sheets("Parts List").Range("A1").Select 'Not needed
If dstWs.Cells(dstRow, "A").Value <> srcWs.Cells(srcRow, "A") Then
'Increment destination row
dstRow = dstRow + 1
'Store part number
dstWs.Cells(dstRow, "A").Value = srcWs.Cells(srcRow, "A").Value
End If
'Store other data
Select Case srcWs.Cells(srcRow, "B").Value
Case "DES"
dstWs.Cells(dstRow, "B").Value = srcWs.Cells(srcRow, "C").Value
Case "EXT"
dstWs.Cells(dstRow, "E").Value = srcWs.Cells(srcRow, "C").Value
Case "MKT"
dstWs.Cells(dstRow, "C").Value = srcWs.Cells(srcRow, "C").Value
End Select
Next
您收到的“下一步没有赞成”错误是由于If
语句不匹配(您的第一个If
语句没有相应的End If
)和您的{{1} } block在你的With
循环内开始,但在循环结束后结束。通过始终/一致地缩进代码,可以轻松获取这种类型的错误。下面是原始代码缩进后的样子:
For