VBA根据行

时间:2016-09-27 20:51:10

标签: excel vba dynamic excel-formula sum

首先,我想明确表示我是VBA的新手,但是我的配方相当不错。

我正在创建一个基于广告系列的预算,每个广告系列都有子活动。然后,我需要将每个子活动总结为他们所属的每个广告系列的顶线。

        A             B          C          D       E       F
 1 Campaign Title  Identifier  Activity     Jan      Feb    Mar
 2  Campaign 1      Primary
 3  Campaign 1      Sub        Advertising  200             300
 4  Campaign 1      Sub        Promotion             300
 5  Campaign 1      Sub        PR           100
 6  Campaign 2      Primary
 7  Campaign 2      Sub        Advertising                  500

因此,对于B列中存在“主要”的每一行,工作表会自动将D,E,F列中的行值相加,直到下一个“主要”行,并将总数添加到顶部主线。所以D2 = SUM(D3,D4,D5),D6 = Sum(D7)......等等。

现在,如果工作表已修复,我只需将Sum(D3:D5)添加到每个主要行并拖动,但这将是针对具有不同活动量的多个人将插入任意数量的活动和子活动,保证他们会犯错误,必须添加总和公式。

我希望有一些神奇的VBA会自动添加总和,如果一行有主要内容,并动态地知道它们会一直上升到下一个“主要”行?

1 个答案:

答案 0 :(得分:0)

  1. 选择列E:G。

    half_sums_1
  2. 点击 F5 ,点击 Special ,选择strong 空白,然后点击确定
    /> half_sums_2
  3. 使用E2作为ActiveCell选择空白。加上这个公式,

    =IF($C2="primary", SUM(E3:INDEX(E3:E9999, IFERROR(MATCH("primary", $C3:$C9999, 0)-1, MATCH("zzz", $C3:$C9999)))), TEXT(,))
  4. Ctrl Enter↵结束。

    half_sums_3