列U中的求和单元格放置在Col Q中的合并单元格中,基于列A中的值

列U中的求和单元格放置在Col Q中的合并单元格中,基于列A中的值

问题描述:

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 

此代码基于ref#在列a中合并单元格。我想从相应的行中山坳添加到它因此在山坳QI拿到器和U列U中的求和单元格放置在Col Q中的合并单元格中,基于列A中的值

感谢

sample picture

+0

的 '是什么' 的总和成Q列?你也可以记录一个宏,看看它是如何编写的,并将代码引入你的代码中。 – Rosetta

+0

在这个例子中,我想总结u2到u9,然后把q2,u10到u15到q10,然后到u16到q16 –

我不会用偏移 - 我首先建议设立工作表作为一个变量。如果您一次打开多个工作表,那么如果您没有专门引用该工作表,Excel可能会感到困惑 - 因此,运行宏可能最终会在不可预知的工作表上运行,并产生不可逆转的结果。所以如果我是你,我会设置它,所以我有通常的wb = ThisWorkbook,然后设置你的范围我猜也一样,我再次宁愿只是循环遍历一个范围,并做一个检查,如果空白,退出声明。但如果你喜欢这样做的话。

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

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

然后设置您的新项目等于该温度。

希望这就是你的意思?


我只是先设置我的范围,然后是工作簿。

wb = ThisWorkBook 
sh = "Sheet1" <-- whatever your sheet name is 

我不明白你想要什么来完成,但在你的主循环只需添加一个循环,而不是插入式语句(我假设你目前的尝试在总和)和使用一个临时变量(temp = 0),然后它将在您需要的范围内添加每行的当前值。正如你对其他人U2-U9等说的那样。只要为被合并的特定组单元格制作另一个范围。

+0

对不起,有人从这里为我写了这段代码,我的技能比录音还要多一点变化,这对我没有多大意义 –

+0

我想添加一条这样的线 cell.Offset(0,16).Formula =“= sum(U”&cell2.Row&“:U”&cell.Row –

我得到了它

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