Board logo

標題: [發問] 特定範圍內已使用列數計算 [打印本頁]

作者: iceandy6150    時間: 2019-9-10 01:09     標題: 特定範圍內已使用列數計算

想請問一個語法
工作表中
A欄的資料5個,A1~A5
B欄的資料5個,B1~B5
C欄的資料10個,C1~C10

如果我這麼寫
Dim a
a = usedrange.rows.count
得到的是10

但是我只想要A,B兩欄已使用的列數
a = Range("A1:B100").usedRange.rows.count
會錯欸

UsedRange好像只能計算整張工作表,不能算特定範圍內的

那我該怎麼辦改呢?
謝謝
作者: iceandy6150    時間: 2019-9-10 09:59

我找到用法了
如果是下函數 就是 =countA("B1:B100")  這樣會算出 5

但是VBA用法 要寫 a = Application.CountA("B1:B100")
可是為什麼我得到都是 1 而已
??
作者: iceandy6150    時間: 2019-9-10 10:01

後來嘗試  要指定工作表及範圍之後
就正常了

如下
a = Application.CountA(Sheets("工作表1").Range("B1:B100"))
作者: iceandy6150    時間: 2019-9-10 10:06

剛想了想
countA只能單一欄去計算有幾個
來當作資料用到第幾列

可是如果中間有空值  比如 A1~A3有資料  A4A5空的 A6有資料
如果用UsedRange.rows.count  會算到 6
用COUNTA只會算出 4 (4個資料)

另外
如果A欄有5筆資料,B欄有6筆資料
而我一次是要計算 A1:B100  這個範圍內,已使用資料的列數
就沒辦法用COUNTA了

所以如果有哪位大大能有好的寫法
再麻煩教教我
謝謝
作者: 准提部林    時間: 2019-9-11 10:07

本帖最後由 准提部林 於 2019-9-11 10:09 編輯

Sub TEST()
Dim xF As Range, xE As Range
With [A1:B10]
     Set xE = .Item(.Count)  '定位指定範圍的最後一格
     Set xF = .Find("*", After:=xE, SearchOrder:=xlByRows, SearchDirection:=xlPrevious) '從最後一格往上找非空
     If xE <> "" Then Set xF = xE '若最後一格非空, 則以此格為準
End With
MsgBox xF.Row
End Sub


====================




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)