Excel 宏,如果单元格有值,则将单元格复制到某个位置
Excel Macro, Copy Cell to a location if a cell has a value
我正在寻求有关 excel 宏的帮助,例如。如果在 Desc 中找到匹配 Bill/car/rent/tax 复制到正确列的 Cost 值的值。
成本描述账单汽车租赁税 155比尔 165租金 195税
成本描述账单汽车租赁税 155 法案 155 165 租金 165 195税195
这能做到吗? 提前致谢。我已经尝试并且可以 select 值但不确定如何粘贴它等,对 vba 宏不是很好。
感谢您的回复。抱歉,我仍然对学习 atm 的东西感到困惑。这就是我得到的,也许这不是正确的方法。
Sub Test()
For Each Cell In Sheets(1).Range("B:B")
If Cell.Value = "Bill" Then
matchRow = Cell.Row
Rows(matchRow - 1).Select
Selection.Copy
End If
Next
End Sub
您似乎有一个子程序可以找到该值 (vlookup/match),但不确定如何将该值应用到工作中sheet?
检查或执行某项单元格是否有值 你可以通过检查一个单元格是否为空来做到这一点,如果为空,则执行此操作,如果为假,则执行此操作。
With worksheets("name")
if .range("A1") = empty then
do something (for example, Application.WorksheetFunction.VLookup() )
else
do something else ("exit sub" if you want it to do nothing)
end with
存储一个值并将其放入活动的某处sheet
dim i (this doesn't have to be "i") as string
i = your function
worksheets("name").range("A2").value = i
如果您的列是固定的,您可以遍历 "Desc" 列,然后将其他列的值复制设置为列 "Cost" 的值。
Sub SortMyColumns()
Dim lastRow As Long
Dim i As Long
Dim costColumn As Integer
Dim descColumn As Integer
Dim billColumn As Integer
Dim carColumn As Integer
Dim rentColumn As Integer
Dim taxColumn As Integer
'Change values according to columns
costColumn = 1
descColumn = 2
billColumn = 3
carColumn = 4
rentColumn = 5
taxColumn = 6
lastRow = Worksheets(1).Cells(Rows.Count, descColumn).End(xlUp).Row
'Loop through the "Desc" column and check values
For i = 1 To lastRow
If Worksheets(1).Cells(i, descColumn).Value = "Bill" Then
Worksheets(1).Cells(i, billColumn).Value = _
Worksheets(1).Cells(i, costColumn).Value
End If
Next i
End Sub
这仅在您的列始终保持不变时才有效。
VLOOKUP 应该不起作用,因为列的顺序错误。成本应该在 Desc 之后才能使 VLOOKUP 起作用。 VLOOKUP 无法向左看。