返回列表 上一主題 發帖

[發問] 如何從兩欄中尋找出指定值

[發問] 如何從兩欄中尋找出指定值

各位先進

sheet1表約有4000筆資料列(含空白列)
VBA是否可以篩選出兩欄中完全相同的值如附檔說明?

煩請大大 前輩指導
TEST27.rar (64.3 KB)

回復 3# GBKEE

謝謝超版答覆

    若sheet1表的A:B欄資料區是由兩個(或多個)文字檔匯入,  並有「END」檔尾區隔
    如果想跳過第1個有「END」 結尾, 來進行sheet1表D3和E3的查詢, 即D3輸入「DD」
    和E3輸入「Z1」  會先跳過第1個有「END」, 然後由下找到位於第2個資料區的
    【儲存格A45】而不是【儲存格A19】.
     
     同理: sheet1表D3輸入「BB」和E3輸入「X001」是否能往下跳  
    至第2個資料區的【儲存格A56】而不是【儲存格A32】

    以上是否可行?
    應如何修改VBA?
TEST27A.rar (30.21 KB)

TOP

回復 7# GBKEE


    謝謝超版答覆

若sheet1表D3儲存格內容固定不變(不考慮E3儲存格), 如果想跳過第1個有「END」資料區,
然後由第2個資料區去查詢A:B欄中, 去做進階篩選(如圖片所示)出符合D3儲存格的全部資料.

例如:D3輸入「EEE」,從第2個資料區A欄
可找出第45列、第48列和第51列共有3列有「EEE」相同值如下:

第45列 EEE→Y01
第48列 EEE→Y04
第51列 EEE→Y02

如何修改VBA將A:B欄中的這些符合篩選資料複製至G:H欄?
TEST27B.rar (28.83 KB)
TEST27B.gif

TOP

回復 7# GBKEE


回復超版

以下是說明, 請參考附件{WORK結果}表所示結果

說明: 從[Sheet1表]A:C欄匯入文字檔可分為A型和B型.
[A型]
1.當匯入A型文字檔會有「END」(稱第1個資料區)及/或數量不等的資料區(稱第2個資料區、第3個資料區、第4資料區…餘此類推)如從Sheet1表A:C欄所示, 其中第1個資料區帶有空白資料列, 而第2個資料區以後, 每個資料區有數量不等資料列(但不含空白資料列). [Sheet1表]G:I欄是由D3儲存格(E3用Y*)為做查詢並先跳過「END」再行找出篩選結果. 例如:D3輸入「EEE」時會找出符合的Y01, Y04和Y02共3筆資料, 然後顯示結果(如G1:I3)於Sheet1表G:I欄(I欄有超連結功能).

2.[WORK表]是資料寫入工作表,其最後1列有1個「END」檔尾(上1列為空白資料列), [Sheet1表]的第1個資料區是以此「END」做複製目的. 當選取[Sheet1表]的第1個資料區後再複製至[WORK表]並覆蓋「END」貼上. 若A型文字檔還有其他的資料區就要做相互尋找與插入(複製貼上)功能; 並利用上述篩選結果, 由[WORK表] G:H欄開始先找出G1和H1內容如G1=「EEE」和H1=「Y01」(本例如第1點說明)進行[Sheet1表]的第2個資料區(如A13:C14)做複製, 然後切換至[WORK表]去找到符合[Sheet1表] G1=「EEE」和H1=「Y01」的位址, 將[Sheet1表]的第2個資料區插入此位址(如[WORK表]所示結果).

同理:
繼續做下個G2=「EEE」和H2=「Y04」並將[Sheet1表] 的第3個資料區(如A16:C17)做複製並插入至[WORK表]符合[Sheet1表] G2=「EEE」和H2=「Y04」的位址. 然後繼續做下個G3=「EEE」和H3=「Y02」並將[Sheet1表] 的第4個資料區(如A19:C21)做複製並插入至[WORK表]符合[Sheet1表] G3=「EEE」和H3=「Y02」的位址…餘此類推

[B型]
當匯入B型文字檔至[Sheet1表]A:C欄(範例顯示於L: M欄)就會有「MMM」做檔尾, 但不會有「END」,其資料是以[Sheet1表]D3和E3來做[WORK表]刪除功能. 若D3輸入「EEE」和E3輸入「Y15」,就會進行[WORK表]符合D3:「EEE」和E3:「Y15」查詢, 找到此筆資料(僅1筆)的地址後,往上選取[WORK表]A:C欄區塊資料列並做該區塊資料列刪除工作, 然後將B型文字檔的[Sheet1表]資料全部選取(如L3:N8)並插入貼至[WORK表]該處(如C34)即完成.

應如何修改VBA達到這樣的結果?
TEST27B.rar (104.77 KB)

TOP

本帖最後由 luke 於 2013-5-29 06:05 編輯

回復 9# GBKEE


    回覆超版

    1.[Sheet1表]插入資料至[WORK表]有4個資料區
        A1:C10
        A13:C16
        A18:C21
        A23:C27
2.執行「寫入WORK」按鍵時因[WORK表]有部份資料列與[Sheet1表]重覆就會產生錯誤, 若[WORK表]改copy方式, 直接複製[Sheet1表]的4個資料區至[WORK表]

If D.EXISTS(A.Cells(1, 1) & A.Cells(1, 2)) Then
D(A.Cells(1, 1) & A.Cells(1, 2)).Copy
With A.Resize(1, D(A.Cells(1, 1) & A.Cells(1, 2)).Columns.Count)
.Insert Shift:=xlDown
End With
End If

應如何修改 上述VBA語法?

以上
TEST27D.rar (37.33 KB)

TOP

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題