【问题标题】:Highlight exceeding limit in VBA在 VBA 中突出显示超出限制
【发布时间】:2020-08-13 06:03:03
【问题描述】:
line    customer product OrderQty TotalQty
1        A        11111    5        10
2        B        11111    5        10
3        c        11111    5        10
4        A        22222    5        20
5        B        22222    5        20
6        C        22222    5        20

我有一张如上图所示的表格。

我想突出显示当 OrderQty 大于产品的 TotalQty 时的行。

OrderQty 表示该订单中请求的单位数,TotalQty 表示可用于履行所有订单的总单位数。

在此示例中,我想突出显示第 1、2、3 行,因为产品 11111 OrderQty 5+5+5=15 大于 TotalQty 10。

有没有办法在 VBA 中自动执行此操作?我怀疑使用 Sumifs,但我无法理解..

提前致谢!

【问题讨论】:

标签: excel vba


【解决方案1】:

也许是这样的?

Sub test()
Range("A:E").Interior.Pattern = xlNone
Range("C1:C7").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("AA1"), Unique:=True
Set Rng = Range("AA2", Range("AA100000").End(xlUp))
For Each Prod In Rng
Set c = Range("C:C").Find(Prod.Value, lookat:=xlWhole)
Tot = c.Offset(0, 2).Value
Ord = Application.SumIf(Range("C:C"), Prod.Value, Range("D:D"))
If Ord > Tot Then
For Each cell In Range("C2", Range("C2").End(xlDown))
If cell.Value = Prod.Value Then
Range(cell.Offset(0, -2), cell.Offset(0, 2)).Interior.Color = 65535
End If
Next cell
End If
Next Prod
Range("AA:AA").ClearContents
End Sub

或者如果您选择不使用 VBA,请使用条件格式。

  1. 选择要突出显示的范围
  2. 点击条件格式--->新建规则
  3. 选择“使用公式确定要设置格式的单元格”
  4. 在公式框中输入=SUMIF($C:$C,$C2,$D:$D)>VLOOKUP($C2,$C:$E,3,FALSE)
  5. 单击“格式”按钮,然后根据需要进行格式设置
  6. 点击确定,点击确定。

【讨论】:

  • 这正是我想要的!非常感谢
【解决方案2】:

首先,精简你的表,分成两个表:

  1. 行、客户、产品、OrderQty 在一张表中。
  2. product、TotalQty 其他表。

假设“表 2”中的 {product,TotalQty} 和“表 1”中的另一个表,然后在第二个表中添加一列(表 2 中的 C 列)“OrderQty>TotalQty”并在单元格中插入公式在它下面,如下:

=IF(SUMIF(Sheet1!$C:$C,$A2,Sheet1!$D:$D)>$B2,"Yes","No")

将公式拖放或复制粘贴到剩余的产品行。

截图:

【讨论】:

    【解决方案3】:

    您不需要 VBA。假设上面的表格从第 1 行开始,A 列中的 Line 和 E 列中的 TotalQty;在 F 列中放置一个唯一的 Product 列表,在单元格 G2 中放置公式:

    =IF(SUMIF(C:C,F2,D:D)>VLOOKUP(F2,C:E,3,FALSE), "Over", "Equal or under")
    

    SUMIF 对每个产品的 OrderQty 求和,VLOOKUP 返回表中每个产品的第一个实例的 TotalQty。然后,如果需要,您可以使用条件格式突出显示行。

    如果您确实采用了 VBA 路线,我可能会将表放入一个数组中,创建一个具有 OrderQty 值的 Product 字典,然后循环数组和求和值,或者循环字典键和调用 sumif 工作表函数。

    【讨论】:

      【解决方案4】:

      [晚安凯尔,

      这就是你想要做的。这只是简单的解决方案,但可以帮助您。 我为您提到的标准使用了一个帮助专栏。我用过sumifs。您可以根据自己的风格和需求对其进行修改。我使用条件格式来突出显示单元格。]1

      【讨论】:

      • 您应该考虑更新您的答案以符合How to answer 准则。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2016-04-25
      • 2020-02-24
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      相关资源
      最近更新 更多