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 无法向左看。