2017-11-04 171 views
0
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 –

回答

0

我不會用偏移 - 我首先建議設立工作表作爲一個變量。如果您一次打開多個工作表,那麼如果您沒有專門引用該工作表,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 –

0

我得到了它

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