Board logo

標題: 依條件搜尋篩選資料集中於1個檔案 [打印本頁]

作者: oak0723-1    時間: 2022-7-2 19:45     標題: 依條件搜尋篩選資料集中於1個檔案

同1個資料夾裡有20個csv檔案
想在檔案"集中00"的工作表"順序"中的B2儲存格輸入所要篩選的數值或文字
篩選各csv檔的A欄
當符合之資料整列依照蒐尋順序複製至檔案"集中00"的工作表"集中"中(第1欄顯示檔名,如圖01)
當搜尋資料符合者不只1列則每1個都複製(第1欄顯示檔名,如圖01)
當搜尋資料沒有符合者就只顯示檔名(第1欄顯示檔名,如圖01)
作者: samwang    時間: 2022-7-3 19:25

回復 1# oak0723-1

不好意思,看不太懂需求,請再補充說明一下,謝謝
作者: samwang    時間: 2022-7-3 20:35

回復 1# oak0723-1
集中00的B欄順序和C檔名是人工填寫,有可能20個,有可能17...(有可能不按順 序,跳號),依據那些資訊去查詢需要的數字,對嗎?有找到符核則複制整列資料,對嗎?
作者: oak0723-1    時間: 2022-7-3 21:05

集中00的B欄順序和C檔名是人工填寫,有可能20個,有可能17...(有可能不按順 序,跳號),依據那些資訊去查詢需要的數字,對嗎?有找到符核則複制整列資料,對嗎?--是的
作者: oak0723-1    時間: 2022-7-3 21:09

回復 3# samwang


    集中00的B欄順序和C檔名是人工填寫,有可能20個,有可能17...(有可能不按順 序,跳號),依據那些資訊去查詢需要的數字,對嗎?有找到符核則複制整列資料,對嗎?依據檔案"集中00"的"順序"工作表的B2儲存格裡的資料去搜尋
作者: oak0723-1    時間: 2022-7-3 21:41

本帖最後由 oak0723-1 於 2022-7-3 21:44 編輯

回復 2# samwang


同1個檔案夾裡有20個檔案,依據所輸入的數值為條件來篩選,將符合的就整列複製集中到檔案"集中00"的工作表"集中"(但第1個欄位要顯示檔名)
1>在檔案"集中00"的"順序"B2儲存格輸入數值,就以此數值與順序去搜尋20個檔案的A欄位,符合者就整列複製到工作表"集中"(但第1個欄位要顯示檔名)
2>當同1檔案搜尋到符合有幾列,就就複製幾列,(但第1個欄位要顯示檔名)
3>當檔案搜尋不到符合,只第1個欄位顯示檔名,第2欄位就顯示0
作者: samwang    時間: 2022-7-4 21:09

回復 6# oak0723-1

請測試看看,謝謝
Sub test()
Dim Arr, Crr, T, Brr(1 To 10000, 1 To 200), ph$, fn$, n&, C%, x%, j%
Application.ScreenUpdating = False
ph = ThisWorkbook.Path & "\"
With Sheets(1)
    T = .[b2]
    Arr = .Range(.[b4], .[b65536].End(3))
    For x = 1 To UBound(Arr)
        fn = Format(Arr(x, 1), "00"): Arr(x, 1) = fn
        With Workbooks.Open(ph & fn & ".csv")
            Crr = Range("A1").CurrentRegion
            .Close
        End With
        For i = 1 To UBound(Crr)
            If Crr(i, 1) = T Then
                n = n + 1: Brr(n, 1) = fn
                For j = 1 To UBound(Crr, 2): Brr(n, j + 1) = Crr(i, j): Next
                If UBound(Crr, 2) + 1 > C Then C = UBound(Crr, 2) + 1
            End If
        Next
    Next
    .Range("c4:c" & UBound(Arr)).NumberFormatLocal = "@"
    .[c4].Resize(UBound(Arr), 1) = Arr
End With
With Sheets(2)
    .Range("a2").CurrentRegion.Offset(1) = ""
    .Range("a3:a" & n).NumberFormatLocal = "@"
    .[a3].Resize(n, C) = Brr
End With
Application.ScreenUpdating = True
End Sub
作者: oak0723-1    時間: 2022-7-4 23:27

回復 7# samwang


    感恩感恩
謝謝




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