有時(shí)需要在Excel公式中用到合并單元格內(nèi)所包含的行數(shù)或列數(shù)。例如下圖為幾類產(chǎn)品的數(shù)量統(tǒng)計(jì),其中每種大類的產(chǎn)品都包含若干小類,需要在合并的單元格中得到各種小類的品種數(shù)及數(shù)量合計(jì)。由于合并單元格與各個(gè)小類單元格相對(duì)應(yīng),且各小類數(shù)量不等,因而有必要統(tǒng)計(jì)合并單元格內(nèi)的行數(shù)。
用自定義函數(shù)可以方便地得到合并單元格內(nèi)的行數(shù)或列數(shù),方法如下。
按Alt+F11,打開(kāi)VBA編輯器,單擊菜單“插入→模塊”,在代碼窗口中輸入下列代碼:
Function MergeRowsCount(Rng As Range) As Long
MergeRowsCount = Rng.MergeArea.Rows.Count
End Function
這樣就定義了一個(gè)自定義函數(shù)MergeRowsCount,它可以獲取某個(gè)合并單元格內(nèi)所包含的行數(shù)。上圖中,E5單元格為5行合并的單元格,下面的公式可以返回?cái)?shù)值5:
=MergeRowsCount(E6)
由于本例中E列或F列合并單元格內(nèi)的行數(shù)不等,不能用拖動(dòng)的方法填充公式,用下面的方法來(lái)批量輸入公式:
選擇E3:E12區(qū)域,在編輯欄中輸入公式:
=COUNTA(OFFSET(D3,,,MergeRowsCount(E3)))
然后按Ctrl+Enter即可將公式輸入到E列各合并單元格,該公式返回合并單元格對(duì)應(yīng)C列的小類產(chǎn)品品種統(tǒng)計(jì)。用同樣的方法將下面的公式輸入到F列,在各合并單元格中即可得到小類產(chǎn)品的數(shù)量合計(jì):
=SUM(OFFSET(D3,,,MergeRowsCount(E3)))
要獲取合并單元格內(nèi)所包含的列數(shù),可用下面的代碼:
Function MergeColumnsCount(Rng As Range) As Long
MergeRowsCount = Rng.MergeArea.Columns.Count
End Function