我得到了一个“新”表,它将每天生成几次,并且在此子表之后将被删除。
我想从“新”表复制数据并将其粘贴到现有的“记录”表中
- 将数据粘贴到相应的行中(不同的水果)
- 如果“记录”表中不存在水果,则添加新的水果行
- 从(az)开始排序,“记录”表中的整个使用范围按水果名称的第一列排序
- 对使用范围内的空白单元格填充零
- 在最后使用的范围行 + 1 处添加一个总计行(因此,每当此表针对新的摊位订单运行时,它都会有所不同)
表格:记录,新的,我想要它
在这种情况下,你可以注意香蕉、蓝莓和火龙果
我现在收到“Block If without End If”的错误。
更新:我错过了查找 blankCol 的 End If。现在代码没有错误,但我无法获得我想要的结果。
我不知道代码中出了什么问题,因为香蕉、蓝莓应该作为新水果添加到“记录”中,但现在我在列表中得到了一个额外的草莓,想必它应该是关于 else 条件的 smtg,但我不知道如何修复它。
目前我只达到了要求的第二部分,因为我对使用的范围还不太熟悉,所以在编码方面我仍然遇到一些困难。
Sub fruit()
'find first blank column
blankCol = ThisWorkbook.Worksheets("Records").Cells(1, Columns.Count).End(xlToLeft).Column
If blankCol > 1 Then
blankCol = blankCol + 1
End If
'paste the list into existing "Records" sheet
Set rsht = ThisWorkbook.Worksheets("Records")
Set r = rsht.Range("A1") 'record sheet
'set up header for new entry in "Records"
r.Offset(0, blankCol - 1).Value = "new" 'new sheet name from different stalls
r.Offset(1, blankCol - 1).Value = "Amount"
'new sheet with new data
Set temp = ThisWorkbook.Worksheets("new")
Set n = temp.Range("A1") 'temp : new
Dim lastrow As Long
lastrow = temp.Cells(Rows.Count, "A").End(xlUp).Row 'last row in new temp sheet
Dim nextrow As Long
nextrow = rsht.Cells(Rows.Count, "A").End(xlUp).Row + 1 'find next empty row in "Records"
j = 2 '"Records" sheet
For i = 1 To lastrow 'refer new
If n.Offset(i, 0).Value = r.Offset(j, 0).Value Then 'if name matched then
r.Offset(j, blankCol - 1).Value = n.Offset(i, 1).Value 'copy respective value
Else
'paste new name into next available row
r.Offset(nextrow, 0).Value = n.Offset(i, 0).Value 'fruits
r.Offset(nextrow, blankCol - 1).Value = n.Offset(i, 1).Value 'amount
End If
j = j + 1
Next i
End Sub
'delete that new sheet
'ThisWorkbook.Worksheets("new").Delete