列U中的求和单元格根据列A中的值放入Col Q中的合并单元格

时间:2017-11-04 03:32:06

标签: excel-vba vba excel

 Set cell = Range("A2")
Do While cell.Value <> ""
    Set cell2 = cell.Offset(1)
    Do While cell2.Value = cell.Value
        Set cell2 = cell2.Offset(1)
    Loop
    Application.DisplayAlerts = False
    cell.Offset(0, 15).Resize(cell2.Row - cell.Row).Merge
    cell.Offset(0, 15).Formula = "=+RC[4]"
    cell.Offset(0, 16).Resize(cell2.Row - cell.Row).Merge
    cell.Offset(0, 17).Resize(cell2.Row - cell.Row).Merge
    cell.Offset(0, 18).Resize(cell2.Row - cell.Row).Merge
    Application.DisplayAlerts = True
    Set cell = cell2
Loop

此代码根据col a中的ref#为我合并单元格。我想添加它,所以在col Q中我从col u

中的相应行中得到总和

由于

sample picture

2 个答案:

答案 0 :(得分:0)

我不会使用偏移量 - 我建议您首先将工作表设置为变量。如果您一次打开多个工作表,如果您没有特别提到该工作表,Excel可能会感到困惑 - 因此运行宏最终会在非预期的工作表上运行它,并产生不可逆转的结果。

所以,如果我是你,我会设置它,所以我有通常的wb = ThisWorkbook,然后设置你的范围我猜相同,我再次宁愿只是循环一个范围并检查是否为空,退出语句。但如果你喜欢这样做那么好。

只需在其中放入一个循环语句,即可在相关列之前对列进行求和。使用cell.Column返回该列,然后您可以通过创建基于该列的新范围以及您需要的多行来从上一列循环(从您的问题中不是很清楚)。

(NA^!rowSums(!is.na(etude1))) * rowSums(etude1, na.rm = TRUE)
#[1] 12 12 NA  4 20

然后将新项目设置为等于该温度。

希望这就是你的意思?

我首先设置我的范围和工作簿。

Set r = range(cells(1,column-1), cells(xxx, column-1))
temp = 0
For Each item In r
    temp = temp + item
Next

我不明白你究竟想要完成什么,但是在你的主循环中只需添加一个循环而不是插入公式语句(我假设是你当前尝试的总和)并使用临时变量( temp = 0),然后只需添加所需范围内每行的当前值。所以当你对其他人说U2-U9等时,只需要为合并的特定单元格设置另一个范围。

答案 1 :(得分:0)

我明白了

cell.Offset(0, 16).Formula = "=sum(U" & cell.Row & ":U" & cell2.Row - 1 & ")"