我要做的是在Excel中将金额从一行更新到另一行。它们没有任何组合的键,但它们是在模式中。始终以Item Group开头,在Item Group结束后约3-7行。我想从物料组的末尾获取金额并更新物料组中的行,但始终物料组将是第一个,然后是物料组的末尾。
我可以上传到SQL,如果它更容易处理或访问。
这就是问题所在。
这就是我想要完成的:
在这次更新之后,我想删除项目组之后的每一行,但只删除到项目组的末尾。
发布于 2018-11-20 23:28:45
所以基本上,如果你还没有开发者标签,你需要去选项>自定义功能区>点击‘开发者’
然后单击开发人员选项卡上的VB编辑器,在项目区域中单击鼠标右键并选择“插入新模块”。在新模块中,插入以下代码并保存。
为了使其易于运行,您可以进入Developer选项卡> Insert > Button。然后右键单击该按钮,并将其分配给刚刚创建的宏,以便每次要更新项目组值时,都可以单击该按钮。如果按钮不允许您“指定宏”,那么您可能插入了错误类型的按钮。
Option Explicit
Sub UpdateValues()
Dim itemCol As Long
Dim lastRow As Long
Dim row As Long
Dim lastEnd As Double: lastEnd = 0.0
' set reference to your worksheet
With ThisWorkbook.Worksheets("your sheet name")
' set column with title 'Item_Type' in Row 1
For row = 1 To 20
If Trim(CStr(.Cells(1, i).Value)) = "Item_Type" Then itemCol = i
Next
' find last row of Item_Type column
lastRow = .Cells(.Rows.Count, itemCol).End(xlUp).Row
' loop backwards thru rows
For row = lastRow To 1 Step -1
' if cell contains word 'end'
If InStr(LCase(CStr(.Cells(row, itemCol).Value)), "end") Then
' set our group value
lastEnd = .Cells(row, itemCol+1).Value
' if lowercase(cell) = 'item group'
ElseIf LCase(CStr(.Cells(row, itemCol).Value)) = "item group" Then
' put end value in the cell
.Cells(row, itemCol+1).Value = lastEnd
End If
Next row
End With
End Sub
https://stackoverflow.com/questions/53395832
复制相似问题