VBA(Excel)2010:特定的脚本操作方法,处理范围比较

时间:2015-01-20 19:57:29

标签: arrays excel vba range

我有3列符合这些规则:

  • Col A中的任何单元格都可以为空,否则它包含一个字符串。
  • 如果Col A中的行为空,则Col的B和C中的该行将为空。
  • 如果填充了Col A中的行,则Col B中的该行将填充整数,而Col C中的该行可能为空或具有" 1"。

我需要一个脚本,对于Col A中的每个单元格,

  1. 检查该单元格中的字符串,并在Col A中查找所有相同的字符串。
  2. 对于包含所述匹配字符串的每一行,检查Col C是否为" 1"
  3. 对于上述两者为真的每一行,将Col B中的值相加,并用该总和替换每一行。
  4. 例如,这个:

    A B C
    x 1  
    x 2  
    z 2 1
    y 1 1
    y 2 1
    
    y 1 
    z 2 1
    z 1 1
    

    应该成为这个:

    A B C
    x 1
    x 2
    z 5 1
    y 3 1
    y 3 1
    
    y 1
    z 5 1
    z 5 1
    

    因此在Col A中找到3个不同的字符串,(x y和z)。找到了x的重复,但是col B中的值没有求和,因为没有" 1"在Col C. Dupes中找到了y,但只有那些有" 1"总结到右边。所有找到的z都有一个" 1"所以所有的都是相加的。

    最好的方法是什么?如果我需要澄清一些关于这个问题的内容,请告诉我(我知道这个问题很复杂,但我花了很多时间试图尽可能清楚地说明这个问题。)

1 个答案:

答案 0 :(得分:0)

一个简单的公式应该完成这项工作:假设数据在A:C

中找到
=IF(ISBLANK(A2),"",IF(ISBLANK(C2),B2, SUMIFS(B:B,A:A,A2,C:C,1)))

IF为空时,外部column A不会显示任何内容 当IF为空时,内部column B显示column C SUMIFScolumn B加起来column Acolumn C相同(当前行),{{1}}为1。