Excel 当两个工作表中的单元格与单独的特定值匹配时,如何更改单元格值?

Excel 当两个工作表中的单元格与单独的特定值匹配时,如何更改单元格值?,excel,excel-formula,Excel,Excel Formula,表1 表2 我正在尝试做以下工作,但似乎无法解决: 表1是我的库存,表2是供应商的库存。我们将以SKU“AAA”为例 如果图纸2的SKU(A2)等于状态“缺货”(C2),则与图纸1的SKU(E3)匹配,并将数量(D3)更改为“0” 在这种情况下,我需要SKU AAA、DDD和EEE的数量在表1中更改为0 如果我有数百个SKU行需要每天运行,那么最好的公式是什么?是否可以使用宏自动执行此操作 如果这个问题很傻,请原谅,因为我对这个问题还很陌生,希望有人能给我一些启示,并为我指出正确的方向。您可

表1

表2

我正在尝试做以下工作,但似乎无法解决:

表1是我的库存,表2是供应商的库存。我们将以SKU“AAA”为例

如果图纸2的SKU(A2)等于状态“缺货”(C2),则与图纸1的SKU(E3)匹配,并将数量(D3)更改为“0”

在这种情况下,我需要SKU AAA、DDD和EEE的数量在表1中更改为0

如果我有数百个SKU行需要每天运行,那么最好的公式是什么?是否可以使用宏自动执行此操作


如果这个问题很傻,请原谅,因为我对这个问题还很陌生,希望有人能给我一些启示,并为我指出正确的方向。

您可以在Excel中使用VB,也可以在Excel工作表中使用公式。 如果我正确地理解了您的要求,那么您希望将您的库存[数量]与您的供应商[数量]进行“同步”。如果您使用的是最新版本的Excel,则可以使用XLOOKUP;如果该函数在您的Excel版本中不可用,则可以使用VLOOKUP或使用索引和匹配的组合

在单元格D2的表1中,您可以尝试这些公式

=XLOOKUP(E2,Sheet2!$A$2:$A$6,Sheet2!$B$2:$B$6,"Not Found",0,1)
=VLOOKUP(E2,Sheet2!$A$2:$C$6,2,FALSE)
=INDEX(Sheet2!$A$2:$B$6,MATCH(E2,Sheet2!$A$2:$A$6,0),2)
如果SKU的供应商数量发生变化,它也会自动更新您的库存数量

根据您的评论进行修改

在VBA中,我将遍历每一行并获取SKU,然后我们使用VLOOKUP获取表2中的数量(供应商),如果数量=0,我们将使用0更新我们的库存,如果不是,我们什么也不做,从而保留库存中的现有数量

Sub DoThings()

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim SupplierValue As Long
Dim LastRow As Integer
Dim InventorySKU As String
Dim SupplierQuantity As Integer


Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")

LastRow = ws1.UsedRange.Rows.Count


For i = 2 To LastRow

InventorySKU = ws1.Cells(i, 5).Value

SupplierQuantity = CInt(Application.WorksheetFunction.VLookup(InventorySKU, ws2.Range("A2:C6"), 2, False))

If SupplierQuantity = 0 Then

ws1.Cells(i, 4).Value = 0

End If

Next i
 
End Sub



如果供应商的库存显示缺货,以下公式将您的库存水平设置为零

=IF( VLOOKUP(B2,Sheet2!A1:C6,3,FALSE) = "Out of Stock", 0)
但是,如果您的供应商没有缺货,它不会将您的库存水平设置为适当的数量。为此,您需要一个单独的列来显示您的库存水平,并且您需要在上述公式中的0之后提供该值:

=IF( VLOOKUP(B2,Sheet2!A1:C6,3,FALSE) = "Out of Stock", 0, <correct amt here>)
=IF(VLOOKUP(B2,Sheet2!A1:C6,3,FALSE)=“缺货”,0,)

您可能需要在“if false”子句中使用VLOOKUP(),才能从我提到的另一列中获得正确的金额。

谢谢您的回复!但是,我不希望同步这些数字,而是希望在表2中的数量为0或缺货时,表1中的数量显示为0。例如,如果sheet1的数量为5,sheet2的数量为8,我希望sheet1中的数量保持不变为5。我将在VBA(宏)中执行此操作,如果我这次得到了您想要的,请参阅我的更新答案。您可以根据您的需要对此进行扩展,例如,如果库存已更新为0,但供应商添加了更多库存,则此代码将无法满足此要求,因此您的库存将不会更新:)Hi@Joborobo,问得好。你发布了几个图片链接;SO的最佳实践是发布代码示例,这样人们就可以很容易地重新创建它们,以回答您的问题(或者如果回答不出来,请将图像直接粘贴到问题中)。链接会随着时间的推移变得陈旧,然后你的问题就没有意义了。另外,考虑改变问题的标题——语法上是不清楚的。我将分别回答这个问题。