返回列表 上一主題 發帖

VBA 資料搜尋問題

回復 67# 准提部林

准大
3個公式, 只有公式(3)可用
其他2個皆出錯.
Formula.rar (108.2 KB)

TOP

稍改
Sub Trans_Qty()
Dim R&
With Sheets("Qty on Hand")
     .AutoFilterMode = False
     .UsedRange.Offset(1, 0).EntireRow.Delete
End With
R = Cells(Rows.Count, 1).End(xlUp).Row - 7
If R <= 0 Then Exit Sub
With ['Qty on Hand'!A2:I2].Resize(R)
     [A8:I8].Resize(R).Copy .Cells
     .Sort Key1:=.Item(6), Order1:=xlAscending, _
           Key2:=.Item(3), Order1:=xlAscending, Header:=xlNo
End With
['Qty on Hand'!A1:I1].Resize(R + 1).AutoFilter
With ['Qty on Hand'!I2].Resize(R)
     .NumberFormatLocal = "#,##0;-#,##0"
     '.Formula = "=IF(F2=F3,""A"","""")&TEXT(MID(I1,2,99),""0;-0;0;!0"")+N(H2)" '公式(1)
     '.Formula = "=IF(F2=F3,""A"","""")&IF(ROW(A1)=1,0,MID(I1,2,99))+N(H2)"    '公式(2)
     .Formula = "=IF(F2=F3,"""",SUMIF(F:F,F2,H:H))"  '公式(3)
     '三種公式任選一個, 資料多, 看哪個快, 選哪個
     .Value = .Value
     .Replace "A*", "", Lookat:=xlPart '使用公式(3), 可省略這一行
End With
Application.Goto ['Qty on Hand'!A2]
End Sub

TOP

回復 65# Qin

Sub Trans_Qty()
Dim R&
With Sheets("Qty on Hand")
     If .FilterMode Then .ShowAllData
     .UsedRange.Offset(1, 0).EntireRow.Delete
End With
R = Cells(Rows.Count, 1).End(xlUp).Row - 7
If R <= 0 Then Exit Sub
With ['Qty on Hand'!A2:I2].Resize(R)
     [A8:I8].Resize(R).Copy .Cells
     .Sort Key1:=.Item(6), Order1:=xlAscending, _
           Key2:=.Item(3), Order1:=xlAscending, Header:=xlNo
End With
With ['Qty on Hand'!I2].Resize(R)
     .Formula = "=IF(F2=F3,""A"",""B"")&TEXT(MID(I1,2,99),""0;-0;0;!0"")+N(H2)"
     .Value = .Value
     .Replace "A*", "", Lookat:=xlPart
     .Replace "B", ""
     .NumberFormatLocal = "#,##0;-#,##0"
End With
Application.Goto ['Qty on Hand'!A2]
End Sub

TOP

回復 64# 准提部林

謝謝你的提醒
原來 Data 檔案太大, 打開時, 需要花一點時間才是癥結所在.

現在問題又解決了,
因為我將它儲存為(.xlsb)
在搜尋速度上也令人滿意…

接下來, 還可以請你再幫我最後一個忙嗎?
我想將搜尋出來資料用 VBA 再做一個 [現存數量] Qty on Hand
請看附檔
SearchData.rar (51.48 KB)

TOP

回復 63# Qin


單獨手動打開data檔, 看要花多少時間???
如果檔案中有很多公式, 開啟時會自動重算, 要花些時間的!

所謂[不開啟], 實際是用別種方式開啟, 只是肉眼看不到,
沒有實際檔案測試, 什麼也說不準!!!
_我只用office 2000, 所以, 可另行發帖, 請其他人幫忙吧~~

TOP

回復 60# 准提部林

言歸正傳, 為何在 Search Data 的過程中, 如果不打開 Data 檔, 就要用 1分鐘 的時間搜資料,
如果2檔同時打開, 只需 4秒-7秒, 就可以搜到答案. (40萬筆)

因為我的本意是 Search Data 的過程中, Data 檔是不要打開的.
又要再次麻煩准大幫我看看….

p/s:"日期格式"問題,已找到了解決的方法.

TOP

回復 60# 准提部林

不曉得有何故障, 一直不能將全文完整貼上...

TOP

VBA資料搜尋問題

本帖最後由 Qin 於 2018-10-7 14:35 編輯

回復 60# 准提部林

"歹勢" 啦! 不是嫌麻煩, 只是因為習慣使然.
當想到准大都不厭其煩, 幫我解決一個又一個問題時.
心裡除了感恩還有, 還有無限的感激….
言歸正傳, 為何在 Search Data 的過程中, 如果不開

SearchData_20181007.rar (943.35 KB)

TOP

本帖最後由 准提部林 於 2018-10-4 10:57 編輯

回復 59# Qin

品名搜尋會出現錯誤:
__看[data]表的 G2703 為#N/A,

For j = 0 To 2
    If IsError(Arr(i, Ur2(j))) Then GoTo 102 '在這位置加這一行
    If Ur1(j) <> "" Then If LCase(Arr(i, Ur2(j))) Like LCase(Ur1(j)) = False Then GoTo 102
Next j


至於想[雙按左鍵]改成[ENTER]執行, 不建議這樣做,
CHANGE觸發, 每改一次即執行一次, 不太環保,
輸入並確定要搜尋條件無誤, 再執行程式, 才是最妥當, 差不了多少時間,
資料處理者, 有時不要嫌麻煩~~

TOP

本帖最後由 Qin 於 2018-10-3 23:17 編輯

回復 56# 准提部林

        准大
       
        我又遇到問題了….
       
1)        這次是"品名搜尋"問題, 當在B2輸入搜尋條件後,就會出現
         If Ur1(j) <> "" Then If LCase(Arr(i, Ur2(j))) Like LCase(Ur1(j)) = False Then GoTo 102
       
        因為之前受到"日期格式"的困擾, 以為這次又是什麼"文字格式"
        就跑到VBE 編輯器 Tools-> Options -> Editor Format -> Font 做修改
        無意中發現之前的亂碼現象, 可以在此獲得解決.
       
2)        在 B1, B2,B3 欄, 是以"雙摯觸動"來搜尋資料, 可否改成輸 入搜尋條件後,按 Enter 就可獲得搜尋結果.
        因為感覺比較好使用.至於多條件搜尋就保留原本的方式.
        准大, 如果這個修改會有"牽一髮而動全身"的大幅度更改, 那就免了吧!
       
        謝謝!!
SearchData_181003.rar (428.06 KB)

TOP

        靜思自在 : 閒人無樂趣,忙人無是非。
返回列表 上一主題