我有一個Excel文件,列B中的發票號碼((B2:B14987
),列C中有項目ID,列D中有售出價值,列E中有發票優惠價值。用於合併單元格的宏
我需要一個宏來合併基於發票號碼列的發票折扣值單元格,重複發票號碼,因爲在一張發票中有不同的物品ID。
例如:B1:B3
是相同的發票號,E1
針對的是在B1:B3
,E2:E3
是空白單元發票共同折扣值。所以我想要合併E1:E3
,其值爲E1
。
我有一個Excel文件,列B中的發票號碼((B2:B14987
),列C中有項目ID,列D中有售出價值,列E中有發票優惠價值。用於合併單元格的宏
我需要一個宏來合併基於發票號碼列的發票折扣值單元格,重複發票號碼,因爲在一張發票中有不同的物品ID。
例如:B1:B3
是相同的發票號,E1
針對的是在B1:B3
,E2:E3
是空白單元發票共同折扣值。所以我想要合併E1:E3
,其值爲E1
。
下面的代碼做我認爲你所要求的;一如既往,如果我誤解了,請澄清的問題,我們將有...
在電子表格中創建模塊,並在下面的代碼粘貼:
Private Sub mergeAndAlign(r As Range)
With r
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = True
End With
End Sub
Sub mergeAll()
' step through column E
' merge all cells that have the same invoice number
' they are already sorted - and the value we need is in the first cell
' of the block to be merged
Dim r As Range
Dim prevItem As Range
Dim nextItem As Range
Dim lastRow, thisRow, rCount As Integer
lastRow = [B2].End(xlDown).Row
Set prevItem = [E2]
Set nextItem = prevItem.End(xlDown)
While nextItem.Row <= lastRow
Set r = Range(prevItem, nextItem.Offset(-1, 0))
mergeAndAlign r
Set prevItem = nextItem
Set nextItem = nextItem.End(xlDown)
Wend
' do the last item:
Set nextItem = Cells(lastRow, 5) ' last valid cell in column E
Set r = Range(prevItem, nextItem)
mergeAndAlign r
End Sub
運行從代碼感興趣的表。點擊Alt-F8打開「宏」對話框 - 您應該在列表中看到「MergeAll」項(可能是唯一的一個)。它會帶你從這樣的:
要這樣:
爲了獲得一個有意義的答案,請閱讀使用說明書的常見問題http://stackoverflow.com/questions/how-以及我個人的最愛:http://mattgemmell.com/2008/12/08/what-have-you-tried – 2013-04-30 12:50:50
請向我們展示您的代碼,我們將幫助您解決或改進它。 – 2013-04-30 13:02:46
@菲利普,我有一個很好的經驗,對VBA沒有任何想法,請幫忙 – davidb 2013-04-30 13:22:45