使用vba选择细胞,但类似于control + shift

时间:2019-04-17 11:04:31

标签: excel vba

我需要执行以下操作

 A    B   C   D
 1. DAVE 10
 2. JAN  09
 3. SAL  08
 4. JACK 07
 5. DAN  06
 6. 
 7. POL  05
 8. FRO  04
 9. 

第6行是第6行,但在DAN下面有一个空白单元格。 DAN在B列中。

我需要对空格前的数字求和并在d中进行对应。 如下所示

 A   B   C   D
 1. DAVE 10  40
 2. JAN  09
 3. SAL  08
 4. JACK 07
 5. DAN  06
 6. 
 7. POL  05  9
 8. FRO  04
 9. 

这是一个艰难的

1 个答案:

答案 0 :(得分:0)

这可以做到,尽管那里可能有一个更简单的解决方案!如果放置在其他位置,则需要使用单元格范围。

在单元格D1中放置以下内容并向下复制:

=IF(IFERROR(OFFSET(C1,-1,0),"") = "", SUM(INDIRECT("C" & ROW(C1) & ":C" & ROW(C1) + MATCH(TRUE, INDEX(ISBLANK($C1:$C$9), 0, 0), 0) - 1)),"")

说明:

INDIRECT("C" & ROW(C1) & ":C" & ROW(C1) + ...
设置检查C1:Cx的范围+直到空白为止的行数(接下来进行说明)

MATCH(TRUE, INDEX(ISBLANK($C1:$C$9), 0, 0), 0) - 1)) 匹配寻找一个值,在这种情况下,从单元格到下一个空白行(ISBLANK)(Find the first empty cell in the same column/row)的行数

所需范围已汇总(Sum(...)

然后添加以下内容,以仅显示上方和左侧的行(偏移-1行和0列)为空白时: IF(IFERROR(OFFSET(C1,-1,0),"") = "", ..., "")

仅供参考-IFERROR是因为对于第一行,该行不起作用,因为没有行0。所以insetad,也将其作为空白。