cells(n,m) 行n,列m選擇單元格
當前面分表用迴圈來做,工作量大,需要逐條掃瞄,可用篩選快速高效
autofilter
引數:
•field:=4
•criteria1:="一車間"
示例:range("$a$1:$f$100").autofilter
牛刀小試:資料按分列方式拆分多表
要點:新建表時迴避重名錯誤
使用篩選來拆分工作表
多表合併
**過程:
'條件:表已經做好,篩選資料即可
subchaifen()
dim i as
integer
for i = 2
tosheets.count
sheets(
1).range("
a1:f1048
").autofilter field:=4, criteria1:=sheets(i).name
sheets(
1).range("
a1:f1048
").copy sheets(i).range("a1"
)next
sheets(
1).range("
a1:f1048
").autofilter
end sub
'新增新錶**
subnewsheet()
'第一種方式
sheets.add after:=sheets(sheets.count)
sheets(sheets.count).name = "
345"
'兩種方式,第二種為簡寫
sheets.add(after:=sheets(sheets.count)).name = "
678"
end sub
'msgbox訊息盒子彈窗
'inputbox自定義輸入盒子彈窗
subtest()
'msgbox "hello world"
'inputbox "你幾歲了"
dim i as
integer
i = inputbox("
請輸入你的年齡")
msgbox
"原來你今年
" & i & "歲了"
end sub
'條件:製表次數已確定
'新建表時迴避重名錯誤
subnewsheet()
dim sht as
worksheet
dim k as
integer
'按某項製表,製表次數
for i = 1
to18
'設定重名標識k
k = 0
'遍歷表名,查詢重名
foreach sht in
sheets
if sht.name = sheet1.range("
a" & i) then
k = 1
endif
next
'無重名錶,執行下一步
if k = 0
then
sheets.add after:=sheets(sheets.count)
sheets(sheets.count).name = sheet1.range("
a" &i)
endifnext
end sub
'製表次數不確定
subnewsheet()
dim sht as
worksheet
dim k, i, j as
integer
dim irow as
integer
'這個說的是一共多少行
'自查詢製表行數
irow = sheet1.range("
a65535
").end(xlup).row
'拆分表,製表
for i = 2
toirow
k = 0
'遍歷表名,查詢重名
foreach sht in
sheets
if sht.name = sheet1.range("
d" & i) then
k = 1
endif
next
'無重名錶,製表
if k = 0
then
sheets.add after:=sheets(sheets.count)
sheets(sheets.count).name = sheet1.range("
d" &i)
endifnext
'進入篩選,拷貝資料
for j = 2
tosheets.count
sheets(
1).range("
a1:f
" & irow).autofilter field:=4, criteria1:=sheets(j).name
sheets(
1).range("
a1:f
" & irow).copy sheets(j).range("a1"
) next
'關閉篩選
sheets(1).range("
a1:f
" &irow).autofilter
end sub
sub續:newsheet()
dim sht as
worksheet
dim k, i, j as
integer
dim irow as
integer
'這個說的是一共多少行
dim n as
integer
'按第n列來分
n = inputbox("
請輸入您要分類的列號")
'刪除先前分列資料
if sheets.count > 1
then
'for each sht in sheets
'if sht.name <> "資料" then
'' sht.delete
'end if
'next
for m = sheets.count to
2step -1
'這裡注意:如果正序刪除,會發生越界,因為,後面的表往前走了,錶號有變
sheets(m).delete
next
endif
'取資料總行號
irow = sheet1.range("
a65535
").end(xlup).row
'拆分表
for i = 2
toirow
k = 0
foreach sht in
sheets
'if sht.name = sheet1.range("d" & i) then
if sht.name = sheet1.cells(i, n) then
k = 1
endif
next
if k = 0
then
sheets.add after:=sheets(sheets.count)
'sheets(sheets.count).name = sheet1.range("d" & i)
sheets(sheets.count).name =sheet1.cells(i, n)
endif
next
'進入篩選,拷貝資料
for j = 2
tosheets.count
'sheets(1).range("a1:f" & irow).autofilter field:=4, criteria1:=sheets(j).name
sheets(1).range("
a1:f
" & irow).autofilter field:=n, criteria1:=sheets(j).name
sheets(
1).range("
a1:f
" & irow).copy sheets(j).range("a1"
)
next
'關閉篩選
sheets(1).range("
a1:f
" &irow).autofilter
sheets(
1).select
msgbox
"分列已處理完成,牛逼不
"end sub
操作單元格物件2
呼叫清空過程 歸類 sub tt call t1 呼叫t1清空過程 dim i,j,k as integer for j 2 to sheets.count for i 2 to sheets 1 range d65536 end xlup row if sheets 1 range d i she...
JAVA POI 操作EXCEL 合併單元格
hssfworkbook wb new hssfworkbook hssfsheet sheet wb.createsheet new sheet hssfrow row sheet.createrow short 1 hssfcell cell row.createcell short 1 cel...
c 操作Excel單元格屬性
range.numberformatlocal 設定單元格格式為文字 range range worksheet.get range a1 e1 獲取excel多個單元格區域 本例做為excel表頭 range.merge 0 單元格合併動作 worksheet.cells 1,1 excel單元格...