首页 > 解决方案 > 如何使用if语句匹配多个条件并删除表中的选定行

问题描述

我正在尝试找出一个 IF 函数,当不满足条件时将删除表中的特定行,以便在 VBA 代码中使用(不需要我自己编写,只需要公式帮助)当我设法使功能正常工作。

我有一个带有以下标题的表格:

Article UOM Site    SOH

5855    CS  M01     0.25
5855    SW  M01     0
5855    CS  M04     49
5855    SW  M04     58
5855    SW  M04L    0
5855    CS  M04L    0
30623   SW  M01     142.08
30623   CS  M01     0
30623   SW  M01L    297.42
30623   CS  M01L    0
194272  CS  M27L    11.5
194272  SW  M27L    0
198552  SW  M27     0
198579  SW  M01     80
198579  SW  M04     109
228803  SW  M14     4.67
228803  CS  M14     3.29
344486  CS  M15L    0
344486  SW  M15L    -0.17
373926  SW  M18L    0
373926  CS  M18L    0

如果尝试了不同的 IF 和 MATCH 函数,但它不能正常工作,因为我不知道如何措辞了。

公式应该是这样的:

  1. 如果“文章”和“站点”与另一行相同,那么
  2. 检查“SOH”并选择不 = 0(可能是 + 或 - 值),但
  3. 如果两者都是 =0 或两者都有值,那么
  4. 选择带有“UOM”=CS的那一项
  5. 删除上面未选择的另一行(我会这样做,只需要一种标记需要删除的行的方法)

例 1

  1. 前 2 行具有相同的“文章”和“网站”
  2. 第 1 行的“SOH”值不 = 0,其中第 2 行 =0,因此选择第 1 行
  3. 不适用
  4. 不适用
  5. 删除第二行

例 2

  1. 第 3 行和第 4 行具有相同的“文章”和“站点”
  2. 不适用,下一个选项
  3. 两者都有值 THEN
  4. 选择第 3 行,因为“UOM”=CS
  5. 删除第 4 行

如果有人有更简单的方法,将不胜感激。我想将公式与我的 VBA 代码的其余部分一起使用。

标签: excelif-statementexcel-formula

解决方案


假设同一篇文章和站点的行数不超过 2 行,并且 UOM = CS 的同一篇文章和站点的行数不超过一行,那么这应该标识要删除的行:

=IF(COUNTIFS([Article],[@Article],[Site],[@Site])>1,IF(COUNTIFS([Article],[@Article],[Site],[@Site],[SOH],"<>0")<>1,IF([@UOM]<>"CS","Delete",""),IF([@SOH]=0,"Delete","")),"")

它首先检查是否存在相同文章和站点的重复项。

  • 如果存在,则检查它们是否都具有零或非零 SOH。

    • 如果两者的 SOH 都为零或非零,则删除带有 UOM <> CS 的那个

    • 否则,删除 SOH = 0 的那个


推荐阅读