我想做的是在Excel中将一行中的金额更新为另一行。他们没有任何组合的钥匙,但是它们是有规律的。始终从项目组开始,大约在项目组结束后3至7行。我想从“项目组结束”中获取金额并更新“项目组”中的行,但始终“项目组”将是第一个,然后是“项目组结束”。
如果更易于使用或访问,我可以上载到SQL。
这是问题所在。
答案 0 :(得分:0)
因此,基本上,如果您还没有开发人员标签,则需要转到选项>自定义功能区>单击“开发人员”
然后在“开发人员”选项卡上单击VB编辑器,然后在项目区域中单击鼠标右键,然后选择“插入新模块”。在新模块中插入此代码并保存。
要使其易于运行,可以转到“开发人员”选项卡>“插入”>“按钮”。然后右键单击该按钮,并将其分配给您刚创建的宏,以便每次要更新项目组值时都可以单击该按钮。如果按钮不允许您“分配宏”,则您可能插入了错误的按钮类型。
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