enum 數值
計數求和
end enum
enum 總計
對行列禁用
對行列啟用
僅對行啟用
僅對列啟用
end enum
sub 呼叫()
y = 透視(sheets(1).range("a1:d15"), true, 2, 3, 數值.求和, 總計.對行列啟用, sheets(1).[a21], 1)
msgbox "透視" & iif(y, "成功", "失敗")
end sub
function 透視(資料來源 as range, 首行為標題 as boolean, 列標籤所在列號 as integer, 計數求和列所在列號 as integer, 彙總方式, 總計方式, 結果起始單元格 as range, paramarray 行標籤所列號()) as boolean
on error goto errprocess
sp1 = "|_|"
dim re()
arr = 資料來源
資料起始行 = iif(首行為標題, 2, 1)
資料結束行 = ubound(arr)
set d = createobject("scripting.dictionary")
set d1 = createobject("scripting.dictionary")
for i = 資料起始行 to 資料結束行
d(arr(i, 列標籤所在列號)) = ""
next
列標籤 = d.keys
d.removeall
for i = 資料起始行 to 資料結束行
鍵 = ""
列數 = 0
for each t in 行標籤所列號
if t <> 列標籤所在列號 and t <> 計數求和列所在列號 then
列數 = 列數 + 1
鍵 = 鍵 & arr(i, t) & sp1 '作為列標籤,則不能為行標籤
end if
next
d1(鍵) = ""
鍵 = 鍵 & arr(i, 列標籤所在列號)
if 彙總方式 = 數值.計數 then
d(鍵) = d(鍵) + 1
elseif 彙總方式 = 數值.求和 then
d(鍵) = d(鍵) + arr(i, 計數求和列所在列號) * 1
end if
next
maxr = d1.count + 2
maxc = ubound(列標籤) + 列數 + 2
redim re(1 to maxr, 1 to maxc)
列數 = 0
for each t in 行標籤所列號
if t <> 列標籤所在列號 and t <> 計數求和列所在列號 then
列數 = 列數 + 1
re(1, 列數) = iif(首行為標題, arr(1, t), "")
end if
next
re(1, maxc) = "總計"
re(maxr, 1) = "總計"
for i = 0 to ubound(列標籤)
re(1, maxc - 1 - i) = 列標籤(ubound(列標籤) - i)
next
rekey = d1.keys
for i = 2 to maxr - 1
tmp = split(rekey(i - 2), sp1)
for j = 0 to ubound(tmp) - 1
re(i, j + 1) = tmp(j)
next
for j = 0 to ubound(列標籤)
re(i, maxc - 1 - j) = d(rekey(i - 2) & 列標籤(ubound(列標籤) - j))
re(maxr, maxc - 1 - j) = re(maxr, maxc - 1 - j) + re(i, maxc - 1 - j)
re(i, maxc) = re(i, maxc) + re(i, maxc - 1 - j)
next
s = s + re(i, maxc)
next
re(maxr, maxc) = s
select case 總計方式
case 總計.對行列禁用: maxr = maxr - 1: maxc = maxc - 1
case 總計.對行列啟用 '預設
case 總計.僅對行啟用: maxr = maxr - 1
case 總計.僅對列啟用: maxc = maxc - 1
end select
結果起始單元格.resize(maxr, maxc) = re
結果起始單元格.resize(maxr, maxc).interior.color = 16051688
透視 = true
exit function
errprocess:
set d = nothing
set d1 = nothing
透視 = false
end function
Python 實現秒錶功能
python 實現秒錶功能 以下例項使用 time 模組來實現秒錶功能 例項 import time print 按下回車開始計時,按下 ctrl c 停止計時。while true try input 如果是 python 2.x 版本請使用 raw input starttime time.ti...
C語言順序表功能實現
include include include typedef int datetype typedef struct seqlist seqlist void seqlistinit seqlist ps 初始化函式 void seqlistcheck seqlist ps 檢查容量函式,不夠擴容...
VBA 通過VBA實現EXCEL真正的全屏顯示
說明 通過vba實現真正的全屏顯示excel介面。測試 private sub commandbutton1 click if commandbutton1.caption 全屏顯示 then displayfullscreen true 基本全屏 commandbars 1 enabled fal...