Excel 简单如果然后乘以VBA
我有一个表,如上图,我只想有一个简单的代码,如果ID彼此相等,(1=1),那么它将返回底部(答案)的另一组行,显示Excel 简单如果然后乘以VBA,excel,vba,Excel,Vba,我有一个表,如上图,我只想有一个简单的代码,如果ID彼此相等,(1=1),那么它将返回底部(答案)的另一组行,显示 answer = price * (1 + discount) 假设答案将出现在价格和折扣的下方,以下内容应该会有所帮助 Sub Demo() Dim ws As Worksheet Dim lastRow As Long, i As Long Dim dictPrice As Object, dictDiscount As Object Dim
answer = price * (1 + discount)
假设
答案
将出现在价格
和折扣
的下方,以下内容应该会有所帮助
Sub Demo()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Dim dictPrice As Object, dictDiscount As Object
Dim rng As Range, cel As Range
Set ws = ThisWorkbook.Sheets("Sheet1") 'change Sheet1 to your data sheet
Set dictPrice = CreateObject("Scripting.Dictionary")
Set dictDiscount = CreateObject("Scripting.Dictionary")
With ws
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 'get last row with data using Column A
For Each cel In .Range("A2:A" & lastRow) 'loop though all cells in Column A
If cel.Value = "Price" Then 'check if its Price
dictPrice.Add cel.Offset(0, 1).Value, cel.Offset(0, 3).Value 'add id and correspoding price in dictionary
ElseIf cel.Value = "Discount" Then 'check if its Discount
dictDiscount.Add cel.Offset(0, 1).Value, cel.Offset(0, 3).Value 'add id and correspoding discount in dictionary
ElseIf cel.Value = "Answer" Then 'check if its Answer
cel.Offset(0, 3).Value = dictPrice(cel.Offset(0, 1).Value) * (1 + dictDiscount(cel.Offset(0, 1).Value))
End If
Next cel
End With
End Sub
注意:
如果cel.Value=“Price”那么
是区分大小写的匹配,只匹配Price
而不匹配Price
,同样适用于ElseIf cel.Value=“折扣”那么
和ElseIf cel.Value=“应答”那么
请将实际代码作为文本发布,而不是图像链接!我还没有密码@KenY-N这是一个非常简单的表格,但我不知道该用什么,为什么它甚至需要VBA?你不能用一个SUMIFS乘以另一个SUMIFS吗?@YowE3K我正在做一个更复杂的部分,但我只需要简化它,因为我不太擅长VBAis。有什么理由ID/fruit/price/discount/answer
不是列名。。。。和1/apple/500/5%/525
不在一行???好的一个Mrig+你赢了我。我正要发布类似的答案,不过使用了数组。:)@sktneer-偶数数组在这里是一个不错的选择,也许你应该将其作为答案发布。我使用字典和数组导出了一个解决方案,正如我所说,我正要发布它时,我看到你已经发布了类似的答案,只是我使用了数组而不是范围变量,所以放弃了文件而不保存它。英雄联盟