返回列表 上一主題 發帖

[發問] 篩選?關鍵字?查詢?

[發問] 篩選?關鍵字?查詢?

您好,如圖,如果想簡化自動篩選的步驟(選「自訂」再輸入要查詢的值等於「10058」,
如果是只要有包含100的話要條件再選擇「包含」的這些步驟省略),直接在
B1的地方輸入要篩選或查詢的關鍵字,按ENTER或離開輸入的儲存格後,
可以執行出如下圖的結果,請問用何種方式製作最有效率

謝謝^^



Zip32_10108.rar (897.35 KB)

回復 2# GBKEE


    謝謝GBKEE版大,可以正常執行成功,但不是很理解程式的語法?
    ↓請問這句是什麼意思?
    Range("A3").AutoFilter Field:=1, Criteria1:=Target & "*"

TOP

回復 4# GBKEE


    謝謝GBKEE版大,我會努力研究學習這些陌生的語法~"~,我可以再另外向您請教一個問題嗎? >///<
    請問使用者能點選某列後,將此列的欄位帶到Sheet2裡如下圖所示的位置中,
    點選的順序不重要,但是點過一次的那一列資料就無法在Sheet2出現重複的第二次(也就是每筆資料只能被新增唯一一次到Sheet2裡)
    按清除的按鈕後就會淨空Sheet2裡的值並返回到Sheet1的工作表中
    不曉的這樣的敘述有沒有不清楚的地方,謝謝指教^^


  

  

   VBA學習應用10111.rar (853.87 KB)

TOP

回復 6# GBKEE


    哇,真的沒想到可以做得出來這樣的效果,謝謝GBKEE版大,我要好好努力融會貫通一下,太開心了,非常的感謝您^^

TOP

回復 6# GBKEE


    GBKEE版大,不好意思,我又想到另一個問題,如果帶到Sheet2中的不是連續的欄位呢?
    例如只有第一欄、第三欄、第五欄
    Zip Code        、Area、Scope
    要如何更改呢?

    麻煩您了,謝謝^^

TOP

回復 9# GBKEE


    謝謝GBKEE版大的耐心指導,依您循循善誘的方試讓我自行找出我要的答案了,非常感謝您的用心^^
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim Target_Row As String, xi As Integer, xi_Row As String
  3.     If Not Application.Intersect(Range("A4", Range("A4").End(xlDown)), Target) Is Nothing Then
  4.        'Intersect物件
  5.         Target_Row = Target(, 1) & "," & Target(, 3) & "," & Target(, 5)    '這裡自行修改 連接不連續位置
  6.         xi = 7
  7.         Do While Sheets("sheet2").Cells(xi, 1) <> ""
  8.         xi_Row = Join(Application.Transpose(Application.Transpose(Sheets("sheet2").Cells(xi, 1).Resize(, 3))), ",")
  9.         If xi_Row = Target_Row Then Exit Sub
  10.            xi = xi + 1
  11.         Loop
  12.         Sheets("sheet2").Cells(xi, 1).Resize(, 3) = Split(Target_Row, ",")
  13.         'Split 函數: 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
  14.     End If
  15. End Sub
複製代碼
這樣執行出的是我想要的結果,應該沒錯吧?!

TOP

回復 9# GBKEE

GBKEE版大您好

不好意思,想再向您請教一下,之前設條件是希望Sheet1→Sheet2的資料每一筆只能被建置一次不可重複建置,
現在如果想改成允許同一筆資料無限次數可以點一次A欄某儲存格就出現至Sheet2一次的話,該如何更改程式呢?
我原先以為是「If Not Application.Intersect(Range("A4", Range("A4").End(xlDown)), Target) Is Nothing Then」
這列的關係,但我把這行拿掉後,還是一筆只能出現一次,為什麼呢?

另外,如果使用者不小心點錯,或是點了之後想從Sheet2將某筆移除的話,可以嗎?移除的方式可以跟Sheet1一樣,
例如點選A8的儲存格,就將A8整列移除A9列遞補上A8那列的位置嗎?

謝謝^^

TOP

本帖最後由 emma 於 2012-11-6 18:55 編輯

回復 12# GBKEE


    謝謝GBKEE版主,經測試的結果
    1.允許同一筆資料無限次數可以點一次A欄某儲存格就出現至Sheet2一次,這部份雖然執行沒有問題,但是實際使用後卻覺得不好使用
       因為必需離開原儲存格位置之後,再重新點選才會出現至Sheet2一次,例如點了A8,但沒有離開A8的位置再點一次A8
       是沒辦法繼續新增到Sheet2的。
    2.Sub Ex()  '如果使用者不小心點錯:剛剛點錯 或 刪全部,這段就完全沒有反應,不曉得是我哪裡有疏乎掉的地方?
    會在Sheet2所點選的A欄某儲存格旁出現「!」畫面如下圖↓
    1.jpg
   

    然後,不好意思,我可以再改變一下使用的方式嗎?
    想改變方式是如果在Zip Code前面多一欄筆數,例如在A8輸入所想要的筆數3筆後離開A8,A6輸入所想要的筆數7筆後離開A6
    那Sheet2會出現3筆A8列的指定欄位、7筆A6列的指定欄位,回去Sheet1修改A8筆數5筆、修改A6筆數4筆,
    最後Sheet2就會改為5筆A8列及4筆A6列的指定欄位,這樣可行嗎?
    不好意思,不曉得能不能明確表達我的意思,大致最後想呈現結果畫面如下:dizzy:
   

附件 VBA學習應用10111-2.rar (854.53 KB)

TOP

回復 14# GBKEE


    GBKEE版大,謝謝您,可以正常執行沒有問題,我在第一時間就看到您回復的文了,
    但試了老半天的原因是我想太多了,我以為您在給我出考題,
    要自行去尋找「改變使用的方式」、「傳送次數」、「接收字串」...等中文字部份的答案,
    於是就搞笑了@"@,最後直接貼上您的程式一字未改反而就正常了~"~
    我在自行好好研究一下,非常的感謝您^^

TOP

回復 14# GBKEE


    GBKEE版大您好,有一個地方想在向您請教一下,就是我在Sheet1插入一欄位於A欄的位置並隱藏,此欄預備為索引欄位用,
    但在使用過程中如未至Sheet2點選【清除】的按鈕前,功能一切正常,但點完按鈕後,就會有錯誤,
    試過幾個方式,但不明白為什麼會有這樣的錯誤,所以想再向您請教一下,
    問題很像是出現在Sheet1.UsedRange.Range("B4:B60300").Clear這段,是因為篩選的關係嗎?
  1. Sub 清除_Click()
  2.     Sheet2.UsedRange.Offset(1, 0).Clear
  3.     Sheet1.UsedRange.Range("B4:B60300").Clear  '這段如果拿掉的話,就不會有問題,但又希望使用者在用的時候B欄可以清除重新輸入想要的筆數
  4. End Sub
複製代碼





VBA學習應用10111-03.rar (861.73 KB)
麻煩您了,謝謝^^

TOP

        靜思自在 : 犯錯出懺悔心,才能清淨無煩惱。
返回列表 上一主題