excel - 如何使用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 函数,但它不能正常工作,因为我不知道如何措辞了。
公式应该是这样的:
- 如果“文章”和“站点”与另一行相同,那么
- 检查“SOH”并选择不 = 0(可能是 + 或 - 值),但
- 如果两者都是 =0 或两者都有值,那么
- 选择带有“UOM”=CS的那一项
- 删除上面未选择的另一行(我会这样做,只需要一种标记需要删除的行的方法)
例 1
- 前 2 行具有相同的“文章”和“网站”
- 第 1 行的“SOH”值不 = 0,其中第 2 行 =0,因此选择第 1 行
- 不适用
- 不适用
- 删除第二行
例 2
- 第 3 行和第 4 行具有相同的“文章”和“站点”
- 不适用,下一个选项
- 两者都有值 THEN
- 选择第 3 行,因为“UOM”=CS
- 删除第 4 行
如果有人有更简单的方法,将不胜感激。我想将公式与我的 VBA 代码的其余部分一起使用。
解决方案
假设同一篇文章和站点的行数不超过 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 的那个
推荐阅读
- python - 当模型中的数据发生变化时如何刷新视图?
- r - 如何仅在正范围内抖动值
- ios - 没有在带有firebase的tableview中显示自定义单元格
- javascript - Google Script - 根据单元格值设置过滤条件
- python - 从 CSV 文件中选择 *
- spring-boot - 在 Spring Boot 中处理 Spring Security 防火墙异常
- java - 通过字符串资源填充多个依赖微调器
- ios - 应用程序不会以编程方式快速导航到目标 VC
- docker - Got AuthorizedOnly when pulling images behind corporate proxy
- vb.net - 如何检查某个字符的文本框并在同一位置用不同的字符串替换