請教EXCEL篩選後的結果,如何利用VBA來抓出對應的列索引值?

因為資料很多,所以用了VBA來做排序後再做條件篩選
但現有個疑惑,如果我做好了篩選,但我要如何不要一列一列的去跑整個工作表
而只是單獨的對篩選出來的幾列做比對。
由於在做比對時,我要取得該列的所在列值..
如果用迴圈去跑,感覺應該會把篩選前隱藏起來的列也一塊跑了..挺浪費效率的..
還是我後者的理解錯誤?
請大大們幫幫忙,感謝
-------

補充一下,例如篩選出來的列數分別有51、57、63、72、210、、、307
原總列數可能達1000多列,
這樣的話要如何用變數來抓篩出來的列值?
2022-03-15 3:06 發佈
用 excel VBA. keyin keywork. 一按,data 就到你要的cell了。 youtube 有很多可以找。我也不会,多失败几次,多google , 就会了。 有范例可以抄的会抄就好了。当然一边错一边做,多google , 就会了。我也只会抄。教不了人的。 这两个很不错!! 是英文的,没办法,中文的都是水,没料呀!!
https://www.youtube.com/c/VBAA2Z
https://www.youtube.com/c/Excelcampus1




MaverickRay wrote:
因為資料很多,所以用...(恕刪)
MaverickRay
MaverickRay 樓主

先謝謝,不過就是因為暫且想不到要用哪個關鍵字,原因出在我這感覺挺繞舌的..像這問題我找很久,但都只找到一些不相干的..或者找到的是使用者表單等= ="哎..如果有關鍵字就可好了。

2022-03-19 2:57



(點我看大圖)
MaverickRay
MaverickRay 樓主

我這幾天比較忙,就沒有常上來看,剛大致看了下你的編碼,應該是可行,我晚點再來好好試試,真的很謝謝您的大力幫忙,不論我試完結果如何,都深深感謝,祝褔你^^

2022-03-22 20:12
MaverickRay
MaverickRay 樓主

YAYA...我試了下成功了,雖然很多內容我不太了解,不過超感謝的.我先對不了解處google一下先

2022-03-22 21:43
snare wrote:
(點我看大圖)(恕刪)
不好意思,我發現一個我遺忘的問題想同您請教一下,在您第一列裡
Set All_Criteria = .Range......
這裡
我印像中是前面本要加上application...或其它物件等的做法
可是我自己在寫時常沒有加上 .
而是直接設定= range....
這樣好像也可以用..不過有的時候會很奇怪..
例如:我在目的工作表裡設定某塊區塊範圍..
set myRange= range([A1],[A1],end(xldown))
然後在搜索其它工作表時,若有發現符合搜索條件時,就直接將其發現的地方..
用myRange=......
的方式來貼入..
可是有時程序會很OK的正常執行.
有時卻又常常會顯示myRange這裡的定義有誤而中斷..
偵錯了半天也看不出究竟犯了何種邏輯錯誤或語法錯誤.
後來我的改良方法則是多了一句.
如:
sheets(目的工作表名).select
myRange=......
這樣就不會出現偶而中斷的錯誤..只是我實在不解
剛好看到您的回文裡有用.Range
所以我在想這個. 一定要加嗎?很久前我有在書中看過,但我忘了...哎
------
另外還有一個問題就是,不知大大是否知道
當我在做比對資料時,若有發現重複資料的同時,就將來源工作表內的內容直接貼到目前的工作表上
有時我會這樣寫
sheets("目的工作表名").Range("A1").paste....
但常常會出錯..
或是如下這陳述式
Sheets(2).[b2].Select
這樣就會出現class Range的select方法失敗..
這是不是我誤解那物件的使用方法..
我只能改成先選擇工作表後,再做選取
sheets(2).select
[b2].select
倘若我想只用一句陳述式來直接令工作表切換至另一工作表的某個儲存格或某個區域..
這是不是要用別的替代語法才能解決?
不論如何,這些只是順道想起問問。很感謝您的幫忙。再次說聲謝謝^^
MaverickRay wrote:
Set All_Criteria = .Range......
這裡
我印像中是前面本要加上application...或其它物件等的做法


前面我有用with加上工作表名稱,去掉with會變這樣
Sheets("工作表1").Range(Sheets("工作表1").Cells(2, "A"), Sheets("工作表1").Cells(2, "A")………


正常情況下可省略,特殊用途時才需要加上application,例如以下…
https://docs.microsoft.com/zh-tw/office/vba/api/excel.application.application
https://docs.microsoft.com/zh-tw/office/vba/api/excel.application(object)
https://www.codevba.com/excel/Application.htm#.Yjng8Pk3uyo



MaverickRay wrote:
set myRange= range([A1],[A1],end(xldown))
然後在搜索其它工作表時,若有發現符合搜索條件時,就直接將其發現的地方..
用myRange=......
的方式來貼入..
可是有時程序會很OK的正常執行.
有時卻又常常會顯示myRange這裡的定義有誤而中斷..


因為您range前面,沒指定位置(工作表)
這個方式只適合在只有1個工作表時使用

在多工作表時,會以activesheet為主,程式碼中的select、Activate... 都會讓工作表切換
如果程式碼的功能是針對某一個工作表,那只要工作表切換,又忘了換回來,程式碼就會出錯


MaverickRay wrote:
sheets("目的工作表名").Range("A1").paste....
但常常會出錯..
或是如下這陳述式
Sheets(2).[b2].Select
這樣就會出現class Range的select方法失敗..
這是不是我誤解那物件的使用方法..
我只能改成先選擇工作表後,再做選取
sheets(2).select
[b2].select
倘若我想只用一句陳述式來直接令工作表切換至另一工作表的某個儲存格或某個區域..
這是不是要用別的替代語法才能解決?




https://docs.microsoft.com/zh-tw/office/vba/api/excel.range.copy
https://excelchamps.com/vba/copy-cell-to-new-worksheet/
https://www.excelhowto.com/macros/excel-vba-copy-and-paste-a-range/
https://www.excelcampus.com/vba/copy-paste-cells-vba-macros/
MaverickRay
MaverickRay 樓主

我先再次謝謝您多下~^^~等我晚些再好好來做您回文中的功課,深深祝褔您的大力幫忙與指教,祝好運永伴於你.

2022-03-23 13:02
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?