操作單元格物件2 Excel之VBA(6)

2022-07-11 20:39:11 字數 4656 閱讀 4035

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單元格...