返回列表 上一主題 發帖

資料區域右下欄位獲取

資料區域右下欄位獲取

如附檔,使用ActiveCell.SpecialCells(xlLastCell).Select 資料區域右下欄位,得到G15欄位(為原資料區域)
因原資料有修改,新區域實際右下應為F13
可是ActiveCell.SpecialCells(xlLastCell).Select 仍至G15
請問如何獲取F13,謝謝

Book1.rar (1.9 KB)

回復  Hsieh

SpecialCells(xlLastCell)永遠是工作表中已使用的儲存格之最後一個的儲存格
GBKEE 發表於 2010-6-11 08:17


謝謝兩位板主回覆
可是是不是可以不管ActiveCell有沒有在連續區域,都可找到右下角區域
我試著把資料弄得更亂些,請問如何找到右下角橘色位置?
謝謝

Book1.rar (6.29 KB)

TOP

回復 6# GBKEE

謝謝兩位板主提供Cells.SpecialCells(xlCellTypeConstants)的用法
又多學了一種用法,一種是由區域內各非空白欄位找出最右及最下位置
一種是由區域內各連續區塊的右下,逐一找出最右及最下位置,
於小資料測試ok,可是當我用到資料多且複雜區域時
因為需逐欄位去檢測位置,就掛在那裡
   
只好另想辦法,試著也從SpecialCells(xlLastCell),但從外部倒找回去
請版主指教,謝謝


book1.rar (12.31 KB)

TOP

回復 8# Hsieh

謝謝Hsieh版主回應,我本來也想使用counta來往前推
可是不會使用,現在又學了一種用法
這一帖獲益良多,感謝

TOP

回復 9# 巴克斯

不過剛剛又想到,先前測試也有用過類似從外往內找的方法
但如果也是資料異動多的時候(ex:從30000筆變1000筆)
這時候用counta找到非空白row還是必須找29000次
所以覺得若要適合多資料狀況
可能還是從cells(65536,1).end(3).row到cells(cells(65536,ActiveCell.SpecialCells(xlLastCell).column).row,找到最大row
頂多不會超過256次

TOP

[版主管理留言]
  • GBKEE(2010-6-12 07:18): 打錯字 可在原文 按編輯再修改即可 不必重新再發一次文

本帖最後由 巴克斯 於 2010-6-13 05:46 編輯

回復 10# 巴克斯

sorry,打錯
cells(65536,1).end(3).row到cells(cells(65536,ActiveCell.SpecialCells(xlLastCell).column).end(3).row


瞭解了,以前舊版好像不能重編輯,所以我也沒注意到,順便測試一下~

TOP

回復 14# GBKEE

謝謝兩位板主回覆
版主寫的程式真是精簡
雖知道a(a.Count)(a(a.Count).Count).Row是為了求最下方row
可是看不懂結構用法,是否請版主解釋一下
且若row可以直接求出,那column是否可比照找到
我試著修改如下,可是column會往前多找一格,只好先用k+1,不知為什麼??
  1. Sub aa()
  2. Set a = Cells.SpecialCells(xlCellTypeConstants).Areas
  3. r = a(a.Count)(a(a.Count).Count).Row
  4. k = a(a.Count)(a(a.Count).Count).Column

  5. Cells(r, k + 1).Select
  6. End Sub
複製代碼
另測版主k = UsedRange.SpecialCells(xlCellTypeLastCell).Column用法時
會有錯誤發生,請問正確用法?
我先改用k = ActiveCell.SpecialCells(xlLastCell).Column可用
謝謝

TOP

謝謝GBKEE 版主
解說得很清楚,我想最終這是最符合我的需求了

TOP

        靜思自在 : 【行善要及時】行善要及時,功德要持續。如燒開水一般,未燒開之前千萬不要停熄火候,否則重來就太費事了。
返回列表 上一主題