查看所有煙花系列VBA教程,點(diǎn)擊左下角“原文鏈接”
Calculate 方法
RowDifferences 方法
返回一個(gè) Range 對(duì)象,該對(duì)象表示每行中與比較單元格內(nèi)容不同的所有單元格。
語法:RowDifferences(Comparison)
Comparison 必選,用于與指定區(qū)域進(jìn)行比較的單個(gè)單元格。
這個(gè)方法等同于與定位條件中的“行內(nèi)容差異單元格”。
使用上與ColumnDifferences差別不大,一個(gè)是列差異,一個(gè)是行差異。
Consolidate 方法
將多個(gè)工作表中多個(gè)區(qū)域的數(shù)據(jù)合并計(jì)算至單個(gè)工作表上的單個(gè)區(qū)域。
語法:Consolidate(Sources, Function, TopRow,LeftColumn, CreateLinks)
Sources 可選 ,以文本引用字符串?dāng)?shù)組的形式給出合并計(jì)算的源。
該數(shù)組采用 R1C1樣式表示法,這些引用必須包含將要合并計(jì)算的工作表的完整路徑。
Function 可選,XlConsolidationFunction 常量之一,用于指定合并計(jì)算的類型。
TopRow 可選,如果為 True,則基于合并計(jì)算區(qū)域中首行內(nèi)的列標(biāo)題對(duì)數(shù)據(jù)進(jìn)行合并。
如果為 False,則按位置進(jìn)行合并計(jì)算,默認(rèn)值為 False。
LeftColumn 可選,如果為 True 則基于合并計(jì)算區(qū)域中左列內(nèi)的行標(biāo)題對(duì)數(shù)據(jù)進(jìn)行合并計(jì)算。
如果為 False,則按位置進(jìn)行合并計(jì)算。默認(rèn)值為 False。
CreateLinks 可選,如果為 True,則讓合并計(jì)算使用工作表鏈接。
如果為 False,則讓合并計(jì)算復(fù)制數(shù)據(jù)。默認(rèn)值為 False。
很明顯,Consolidate方法就是在技巧中使用的合并計(jì)算。
示例:
Dim sht As Worksheet
Dim str As String
Dim arr
For Each sht In Worksheets
If sht.Name Like '#月' Then
'對(duì)工作表名稱過濾,只有 X月 這類名字的才處理,X代表1位數(shù)字
str = str & ''' & sht.Name & ''!' & sht.UsedRange.Address(ReferenceStyle:=xlR1C1) & Chr(10)
'返回的地址以R1C1樣式表示,
End If
Next
'這里應(yīng)用代碼來生成數(shù)組,如果要合并的工作表比較多,推薦用代碼,這樣方便,也能避免寫錯(cuò)。
If Len(str) Then
str = Left(str, Len(str) - 1)
'去掉字符串結(jié)尾的CHR(10)字符,避免生成數(shù)組后,最后一個(gè)元素為空
Else
Exit Sub
End If
arr = Split(str, Chr(10))
'字符串轉(zhuǎn)換成數(shù)組
With Worksheets.Add(after:=Worksheets(Worksheets.Count))
.Range('a1').Consolidate arr, xlSum, True, True
'求和,列標(biāo)題,行標(biāo)題,不建立連接
.Cells(Rows.Count, 2).End(xlUp).Offset(2, -1).Consolidate arr, xlSum, True, False
'求和,列標(biāo)題,無行標(biāo)題,不建立連接
.Cells(Rows.Count, 2).End(xlUp).Offset(2, -1).Consolidate arr, xlSum, False, True
'求和,無列標(biāo)題,行標(biāo)題,不建立鏈接
.Cells(1, Columns.Count).End(xlToLeft).Offset(, 2).Consolidate arr, xlCount, True, True, True
'求和,列標(biāo)題,行標(biāo)題,建立鏈接
End With
1月數(shù)據(jù)截圖:
2月數(shù)據(jù)截圖:
3月數(shù)據(jù)截圖:
效果圖:
計(jì)算工作表指定區(qū)域中的單元格
返回值:Variant
說明:
在之前講過的工作簿對(duì)象,工作表對(duì)象時(shí),也有Calculate方法。
所有打開的工作簿 Application.Calculate(或只是 Calculate)
指定工作表 Worksheets(1).Calculate
指定區(qū)域 Worksheets(1).Rows(2).Calculate
單獨(dú)計(jì)算工作表中指定區(qū)域中的單元格時(shí),不會(huì)觸發(fā)工作表或工作簿對(duì)象的Calculate事件。
ColumnDifferences 方法
返回一個(gè) Range 對(duì)象,該對(duì)象表示每列中所有與比較單元格內(nèi)容不同的單元格。
Comparison 必選,用于對(duì)指定區(qū)域進(jìn)行比較的單個(gè)單元格,該單元格必須位于調(diào)用該方法的單元格區(qū)域中。
這個(gè)方法等同于與定位條件中的“列內(nèi)容差異單元格”。
Comparison參數(shù)也就相當(dāng)于比較區(qū)域中的活動(dòng)單元格。
示例:
On Error Resume Next
Dim rg1 As Range
Dim rg2 As Range
Dim rg3 As Range
Dim rg4 As Range
With Range('a1:a12')
Set rg1 = .ColumnDifferences(.Cells(1))
Set rg2 = .ColumnDifferences(.Cells(2))
Set rg3 = .ColumnDifferences(.Cells(3))
MsgBox rg1.Address & vbCr & rg2.Address & vbCr & rg3.Address
'這里是為了演示,沒有判斷對(duì)象變量引用為空的情況。
Set rg4 = .Offset(, 1).ColumnDifferences(.Cells(1, 2))
If Not rg4 Is Nothing Then
MsgBox rg4.Address
Else
MsgBox '源單元格內(nèi)容完全相同'
End If
End With
數(shù)據(jù)截圖如下:
聯(lián)系客服