VBA根据单元格值乘另一个工作表中的单元格

时间:2019-11-07 15:46:14

标签: excel vba

我正在尝试创建一个价格表,该价格表将来自Creo的CSV BOM导入到新的工作表中,我对该部分进行了排序。问题是我想要的下一部分...

在“ G”列中,我们针对不同的材料使用了不同的值,例如:“ MS”,“ SS”,“ ANGLE”,“ PURCHASED”

我遇到的问题是在“ J”列中基于“ G”中的物料创建“总成本”。如果值为“ MS”,则“ J”列中的值为数量x单位质量x材料成本。

“数量”是C列中的值,“单位质量”是E列中的值,“材料成本”始终是名为“ MASTER”的工作表中的单元格H5(应在此处驱动总成本列J来自)

Sub subMultiply()

    For Each Cel In Range("G2:D" & Cells(Rows.Count, "G").End(xlUp).Row)
        If Cel.Value = "MS" Then
            Cel.Offset(0, 3).Value = Cel.Offset(0, -2).Value * ThisWorkbook.Sheets(MASTER).Range(H5).Value * Cel.Offset(0, -4).Value
        ElseIf Cel.Value = "PURCHASED" Then
            Cel.Offset(0, 3).Value = Cel.Offset(0, -3).Value * ThisWorkbook.Sheets(MASTER).Range(H6).Value * Cel.Offset(0, -4).Value
        End If
    Next
End Sub

2 个答案:

答案 0 :(得分:0)

您应该尝试使用select case函数

类似:

Select Case Cells(i, 7)

    Case Is = "MS"
        Cells(i, 10) = 3

    Case Is = "SS"
        Cells(i, 10) = 5

    Case Is = "ANGLE"
        Cells(i, 10) = 8

    Case Is = "PURCHASED"
        Cells(i, 10) = 11
End Select

除了我用于测试的数字(3、5、8和11)之外,您还可以使用任意数字。

您可以使用sheets function选择工作表: Sheets(“ MASTER”)。Cells(5,8)在Master Sheets上为H5。 例如:Sheets("Sheet2").Cells(1, 1).Select

答案 1 :(得分:0)

'''

    Firstrow = .UsedRange.Cells(1).Row
    lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row

    For lRow = lastrow To Firstrow Step -1


        Set ws2 = ThisWorkbook.Sheets("MASTER")

        With .Cells(lRow, "G")

            If Not IsError(.Value) Then

                If .Value Like ("*MS*") Then Cells(lRow, "D").Value = Cells(lRow, "E").Value * ws2.Range("H5").Value

''' 我能够为每种材料添加另一个If语句