我正在尝试创建一个价格表,该价格表将来自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
答案 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语句