Note: The other languages of the website are Google-translated. Back to English

วิธีกรองแถวอัตโนมัติตามค่าเซลล์ใน Excel

โดยปกติแล้วฟังก์ชันตัวกรองใน Excel สามารถช่วยให้เรากรองข้อมูลได้ตามที่เราต้องการ แต่บางครั้งฉันต้องการกรองเซลล์อัตโนมัติตามการป้อนข้อมูลด้วยตนเองซึ่งหมายความว่าเมื่อฉันป้อนเกณฑ์ในเซลล์ข้อมูลจะสามารถ กรองโดยอัตโนมัติในครั้งเดียว มีแนวคิดที่ดีในการจัดการกับงานนี้ใน Excel หรือไม่?

แถวกรองอัตโนมัติตามค่าเซลล์ที่คุณป้อนด้วยรหัส VBA

กรองข้อมูลตามเกณฑ์หลายข้อหรือเงื่อนไขเฉพาะอื่น ๆ เช่นตามความยาวของข้อความโดยคำนึงถึงตัวพิมพ์เล็กและใหญ่


แถวกรองอัตโนมัติตามค่าเซลล์ที่คุณป้อนด้วยรหัส VBA

สมมติว่าฉันมีช่วงข้อมูลต่อไปนี้เมื่อฉันป้อนเกณฑ์ในเซลล์ E1 และ E2 ฉันต้องการให้ข้อมูลถูกกรองโดยอัตโนมัติตามภาพด้านล่างที่แสดง:

ตัวกรองอัตโนมัติ doc 1

1. ไปที่แผ่นงานที่คุณต้องการกรองวันที่โดยอัตโนมัติตามค่าเซลล์ที่คุณป้อน

2. คลิกขวาที่แท็บแผ่นงานแล้วเลือก ดูรหัส จากเมนูบริบทในป๊อปอัป Microsoft Visual Basic สำหรับแอปพลิเคชัน โปรดคัดลอกและวางรหัสต่อไปนี้ลงในช่องว่าง โมดูล หน้าต่างดูภาพหน้าจอ:

รหัส VBA: กรองข้อมูลอัตโนมัติตามค่าเซลล์ที่ป้อน:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160606
   If Target.Address = Range("E2").Address Then
       Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
   End If
End Sub

ตัวกรองอัตโนมัติ doc 2

หมายเหตุ: ในโค้ดด้านบน A1: C20 คือช่วงข้อมูลที่คุณต้องการกรอง E2 คือค่าเป้าหมายที่คุณต้องการกรองตามและ E1: E2 คือเซลล์เกณฑ์ของคุณจะถูกกรองตาม คุณสามารถเปลี่ยนได้ตามความต้องการของคุณ

3. ตอนนี้เมื่อคุณป้อนเกณฑ์ในเซลล์ E1 และ E2 และกด เข้าสู่ ข้อมูลของคุณจะถูกกรองโดยค่าของเซลล์โดยอัตโนมัติ


กรองข้อมูลตามเกณฑ์หลายข้อหรือเงื่อนไขเฉพาะอื่น ๆ เช่นตามความยาวของข้อความโดยคำนึงถึงตัวพิมพ์เล็กและใหญ่

กรองข้อมูลตามเกณฑ์หลายข้อหรือเงื่อนไขเฉพาะอื่น ๆ เช่นตามความยาวของข้อความโดยคำนึงถึงขนาดตัวพิมพ์เป็นต้น

Kutools สำหรับ Excel's ซุปเปอร์ฟิลเตอร์ คุณลักษณะเป็นยูทิลิตี้ที่มีประสิทธิภาพคุณสามารถใช้คุณสมบัตินี้เพื่อสิ้นสุดการดำเนินการต่อไปนี้:

  • กรองข้อมูลด้วยหลายเกณฑ์ กรองข้อมูลตามความยาวข้อความ
  • กรองข้อมูลตามตัวพิมพ์ใหญ่ / เล็ก กรองวันที่ตามปี / เดือน / วัน / สัปดาห์ / ไตรมาส

Kutools สำหรับ Excel: ด้วย Add-in ของ Excel ที่มีประโยชน์มากกว่า 300 รายการให้ทดลองใช้ฟรีโดยไม่มีข้อ จำกัด ใน 30 วัน ดาวน์โหลดและทดลองใช้ฟรีทันที!


สาธิต: กรองแถวอัตโนมัติตามค่าเซลล์ที่คุณป้อนด้วยรหัส VBA


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel ช่วยแก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office / Excel 2007-2019 และ 365 รองรับทุกภาษา ใช้งานง่ายในองค์กรหรือองค์กรของคุณ ทดลองใช้ฟรี 30 วันเต็ม รับประกันคืนเงิน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มผลผลิตของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (36)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณมากสำหรับสูตรข้างต้น - มันใช้งานได้ดี
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันพยายามกรองเวิร์กชีตด้วยรหัสต่างๆ (นำมาจากไซต์ต่างๆ รวมถึงโค้ดนี้ด้วย) แต่ดูเหมือนว่าจะไม่มีโค้ดใดทำงานเลย ในแผ่นงานที่มีข้อมูลในช่วงเซลล์ A101:EF999 (ใช่ ตัวใหญ่) ฉันต้องการกรองแผ่นงานโดยอัตโนมัติโดยใช้รหัสตัวอักษรสามตัวที่ฉันป้อนลงในเซลล์ B5 ซึ่งควรสอดคล้องกับแถวที่มีรหัสเดียวกันนั้นในคอลัมน์ B101 -B999. ตัวอย่างข้อมูลจะมีลักษณะดังนี้: ABCDE 5 ABC ... 101 ABC 102 DEF 103 GHI 104 ABC 105 JKL 106 ABC 107 DEF ในการเลือก "ABC" ในเซลล์ B5 ควรแสดงเฉพาะแถว 101, 104 และ 106 เท่านั้น แต่จะไม่แสดงสิ่งใด เกิดขึ้น มีบางอย่างที่ฉันมองข้ามไปหรือไม่? ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะเลิกทำได้อย่างไร มันซ่อนข้อมูลทั้งหมดของฉัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี รหัสด้านล่างทำงานได้อย่างสมบูรณ์ อย่างไรก็ตาม ฉันจะปิดการใช้งานมาโครได้อย่างไรหากฉันต้องการยกเลิกการกรอง แผ่นงานย่อยส่วนตัว_เปลี่ยน (ByVal Target As Range) 'Updateby Extendoffice 20160606 ถ้า Target.Address = Range ("E2") ที่อยู่จากนั้น Range ("A1:C20") .CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2") สิ้นสุดหากสิ้นสุดย่อย
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ในช่วง ("E2") ที่อยู่ลบข้อมูลใด ๆ ทั้งหมดจะ "ไม่กรอง"
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ใช้งานไม่ได้สำหรับฉัน อาจเป็นเพราะฉันมี office 2010 ไม่ได้ทำอะไร :S
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับการเขียนนี้ขึ้น! ฉันกำลังพยายามปรับโค้ดเพื่อให้มีการยอมรับช่วงต่างๆ

ตัวอย่าง: ฉันป้อน 5 และมันกรองและแสดงเฉพาะทุกอย่างที่อยู่ภายใน .5 จาก 5 (ดังนั้น 4.5 ถึง 5.5)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มันใช้งานได้ดี...ขอบคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับรหัสนี้ ฉันพยายามแก้ไขเพื่อให้ทำงานได้ดีขึ้นสำหรับฉัน แต่มีปัญหา

แผ่นงานของฉันมีข้อมูลจาก A2:G2280 คอลัมน์ A มีชื่อถนน ฉันต้องการพิมพ์ชื่อถนนอย่างน้อยบางส่วนลงใน A1 และแสดงเฉพาะข้อมูลที่มี A1 ทั้งหมดหรือบางส่วน ดังนั้นถ้าฉันพิมพ์ Bro ใน A1 ฉันจะเห็นแถวที่มี Broad, Broadway และ Brook แน่นอนถ้า A1 ว่างเปล่า ฉันจะได้เห็นทุกอย่าง



ขออภัย ฉันไม่คล่องในภาษาต่าง ๆ ของ Excel VBA ฉันเป็นเพียงผู้มอบหมายงาน 911 ที่รู้ว่าพวกเขาเป็นวิธีที่ง่ายกว่า



ขอขอบคุณ.



ทำเครื่องหมาย
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มาร์ค
เพื่อแก้ปัญหาของคุณ โปรดใช้รหัส VBA ต่อไปนี้:
หมายเหตุ: ในโค้ดด้านล่าง A1 คือเซลล์ที่คุณต้องการป้อนเกณฑ์ A2:D20 คือช่วงข้อมูล A คือคอลัมน์ที่มีเกณฑ์ที่คุณต้องการกรอง โปรดเปลี่ยนการอ้างอิงเซลล์เป็นของคุณเอง .

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
Dim xRg เป็นช่วง
Dim xRRg เป็นช่วง
Dim xFNum เป็นจำนวนเต็ม
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Address <> Range("A1")).Address แล้วออกจาก Sub
ตั้งค่า xRg = Range("A2:D20") .CurrentRegion
Application.ScreenUpdating = เท็จ
ถ้า Target.Text = "" แล้ว
xRg.Rows.Select
Selection.EntireRow.Hidden = เท็จ
Application.ScreenUpdating = จริง
ออกจาก Sub
End If
สำหรับ xFNum = 1 ถึง xRg.Rows.Count
ตั้งค่า xRRg = xRg.Range("A" & xFNum)
xRRg.Rows.Select
ถ้า InStr(xRRg.Text, Target.Text) > 0 แล้ว
Selection.EntireRow.Hidden = เท็จ
อื่น
Selection.EntireRow.Hidden = จริง
End If
ถัดไป xFNum
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด

โปรดลอง หวังว่าจะช่วยคุณได้!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับความช่วยเหลือ
ฉันเปลี่ยน A2:D20 เป็น A3:G2281 เพื่อแสดงฟิลด์ข้อมูลของฉัน ตอนนี้เมื่อฉันพิมพ์อะไรก็ได้ในเซลล์ A1 และแท็บออกจากแถวเซลล์ 2-109 จะถูกซ่อนไว้ ไม่ได้กรองและแสดงเฉพาะแถวที่มีข้อมูลทั้งหมดหรือบางส่วนที่ป้อนในเซลล์ A1



ความคิดใด ๆ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี skyyang
รหัสของคุณทำงานได้อย่างสมบูรณ์ แต่ฉันมีคำถาม: ถ้าฉันไม่ต้องการมีเกณฑ์การกรองในเซลล์ A1 และปล่อยเซลล์ว่างไว้ จะไม่แสดงบรรทัดใดๆ อีกต่อไป ทุกอย่างจึงถูกกรองออกไป เหมือนที่มาร์คต้องการ "แน่นอน ถ้า A1 ว่างๆ ฉันจะได้เห็นทุกอย่าง" มันไม่เวิร์คใช่ไหม?
คงจะดีถ้าคุณสามารถช่วยฉันได้
ทักทาย
Carsten
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี skyyang
รหัสของคุณทำงานได้อย่างสมบูรณ์ แต่ฉันมีคำถาม: ถ้าฉันไม่ต้องการมีเกณฑ์การกรองในเซลล์ A1 และปล่อยเซลล์ว่างไว้ จะไม่แสดงบรรทัดใดๆ อีกต่อไป ทุกอย่างจึงถูกกรองออกไป เหมือนที่มาร์คต้องการ "แน่นอน ถ้า A1 ว่างๆ ฉันจะได้เห็นทุกอย่าง" มันไม่เวิร์คใช่ไหม?
คงจะดีถ้าคุณสามารถช่วยฉันได้
ทักทาย
Carsten
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคาร์สเตน
เมื่อปล่อยเซลล์ A1 ว่างไว้ แถวข้อมูลทั้งหมดจะแสดงขึ้น เมื่อป้อนอักขระใดๆ ที่คุณต้องการกรอง แถวข้อมูลจะทำงานอย่างถูกต้อง ปัญหาของคุณเป็นอย่างไร โปรดใส่เอกสารปัญหาของคุณเป็นภาพหน้าจอที่นี่

ขอขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
จะเกิดอะไรขึ้นถ้าคุณมี GRADE11 และ GRADE12 เป็นต้น ตัวกรองจะแสดงสิ่งเหล่านี้ด้วยหรือไม่หากคุณลองกรอง
ใน GRADE1?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีบ๊อบ
ใช่ อย่างที่คุณพูด เมื่อป้อนข้อความบางส่วนที่คุณต้องการกรอง เซลล์ทั้งหมดที่มีข้อความส่วนนั้นจะถูกกรองออก ดังนั้น หากคุณพิมพ์ Grade1 เซลล์ทั้งหมดจะมี Grade1, Grade11, Grage123...จะถูกกรองออก
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สคริปต์ VB ทำงานได้อย่างสวยงาม ขอบคุณมากสำหรับการโพสต์!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
'Updateby Extendoffice 20160606
ถ้า Target.Address = Range("E2").Address แล้ว
Range("A1:C20")).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
End If
ย่อยสิ้นสุด


E2 HUCRESI YERINE E SUTUNUNUNA YAZILAN SON SATIRA GORE FILITRELEME YAPABILIR MI


ตามรหัสที่กล่าวข้างต้น เป็นไปได้ไหมที่จะทำการกรองตามข้อมูลที่เขียนถึงแถวสุดท้ายของคอลัมน์ E ?


ฉันหวังว่าจะได้รับความช่วยเหลือและขอบคุณสำหรับความช่วยเหลือของคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มูรัต
โค้ดด้านบนทำงานได้ดีในเวิร์กชีตทั้งหมด คุณเพียงแค่ต้องเปลี่ยนการอ้างอิงเซลล์ตามความต้องการของคุณ โปรดลอง ขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันไม่รู้ว่าจะเปลี่ยนการอ้างอิงเซลล์ได้อย่างไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มีวิธีให้กรองต่อพร้อมกล่องเพิ่มเติมไหมครับ เมื่อฉันเขียนเป็น ElseIf มันจะเป็นไปตามคำสั่ง ElseIf เท่านั้น
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันก็มีค่ามากมาย แล้วก็ตารางข้อมูล ฉันสงสัยว่าฉันสามารถกรองตารางนั้นตามค่าที่คล้ายกับที่อธิบายไว้ข้างต้นได้หรือไม่ ตัวอย่างเช่น ฉันต้องการคลิกที่เซลล์ที่มีค่าเป็น 3 ซึ่งสอดคล้องกับ 3 ระเบียน (200 แถว 25 คอลัมน์) ที่ตรงตามเงื่อนไข จากนั้นให้กรองตารางของฉันเพื่อแสดงเพียงระเบียนเหล่านั้น ตัวอย่างของเงื่อนไขคือ ถ้าตัวแปรหนึ่งมีค่ามากกว่า 100 ฉันมีเงื่อนไขเหล่านี้มากกว่า 100 เงื่อนไข ซึ่งเป็นสาเหตุที่ฉันต้องการให้ตารางของฉันเชื่อมโยงกับมันในทางใดทางหนึ่ง ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก ในตัวอย่างของคุณที่ให้มา มันจะคล้ายกับถ้าคุณต้องการทุกวัยที่อายุมากกว่า 3, 6, 9, 12 และอื่นๆ แล้วคุณมีตัวแปรที่คล้ายกัน 25 ตัว ดังนั้นเพื่อกรองตารางให้แสดงเฉพาะระเบียนที่มีอายุมากกว่า 3 ปีตามการคลิก ค่าจากรายการที่บอกว่าอายุ>3 - 2 รายการอายุ>6 - 4 รายการเป็นต้น
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
อาจมีข้อผิดพลาดในคำแนะนำ แทนที่จะวางโค้ดลงในโมดูลเปล่า ควรวางโค้ดนั้นลงในหน้าต่างชีต ตัวอย่างเช่น ถ้ามาโครทำงานบน Sheet1 ควรวางโค้ดลงใน Microsoft Excel Objects -> Sheet1(Sheet1) มันใช้ได้กับฉันใน Excel 2016 เท่านั้น

ขอขอบคุณสำหรับโค้ด!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี mjr
บทความกล่าวว่าไม่มีข้อผิดพลาดในบทความนี้ คุณควรใส่โค้ด VBA ลงในโมดูลชีตโดยคลิกขวาที่ชื่อชีตแล้วเลือก View Code เพื่อไปที่โมดูล
แต่การดำเนินการของคุณถูกต้องเช่นกัน
ขอบคุณสำหรับความคิดเห็นของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี,

จะเกิดอะไรขึ้นหากฉันได้รับข้อมูลที่กรองแล้วในแท็บอื่น (แผ่นงาน 2) ในสมุดงานเดียวกัน และเซลล์ที่ตัวกรองต้องการอ้างอิงจะอยู่ในแท็บแรก (แผ่นที่ 1) ฉันใช้ VBA นี้ แต่ไม่ได้ผลเช่นนั้น ต่อเมื่อฉันมีทั้งเซลล์เกณฑ์ (E2 ใน VBA นี้) ในแท็บเดียวกันกับข้อมูลที่กรองแล้ว (A1:C20)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ไงพวก,
คำอธิบายที่สมบูรณ์แบบ ขอบคุณมาก.
1 คำถามเล็กน้อย: หากฉันต้องการกรองด้วยเกณฑ์ 2,3 4 ข้อขึ้นไป จะต้องทำอย่างไร
เช่น อยากบอกว่าอยากเห็นชื่อเฮนรี่ ป.1 กับยุคนี้ ไม่ใช่แค่ 1 เกณฑ์แต่ยกตัวอย่าง 3..=?


ขอบคุณสำหรับการตอบกลับ


ขอแสดงความนับถือ,


TIM
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีทิม
ในการกรองข้อมูลอัตโนมัติตามเกณฑ์หลายเกณฑ์ คุณควรใช้รหัสด้านล่าง: (โปรดเปลี่ยนการอ้างอิงเซลล์ตามความต้องการของคุณ)

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
'อัพเดทโดย Extendoffice
Dim xVStr เป็นสตริง
Dim xFStr เป็นสตริง
xVStr = "E22:G22" 'เกณฑ์ที่คุณต้องการกรองตาม
xFStr = "E21:G22" 'ช่วงมีส่วนหัวของเกณฑ์
ถ้าไม่ (Intersect(Range(xVStr), Target) Is Nothing) แล้ว
ช่วง("A1:C17")).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=ช่วง(xFStr)
End If
ย่อยสิ้นสุด


โปรดลอง หวังว่าจะช่วยคุณได้!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับสิ่งนี้มันมีประโยชน์จริงๆ ฉันมีคำถามหนึ่งข้อ หลังจากเลือกชื่อในเมนูดรอปดาวน์แล้ว (ฉันมีชื่อเป็นเกณฑ์) มันจะแสดงเฉพาะผู้ที่มีชื่อนั้นตามที่ควรจะเป็น แต่ฉันจะทำอย่างไรหลังจากที่ฉันเลือกชื่อแล้ว ฉัน ต้องการเพื่อดูแถวทั้งหมดของตารางของฉัน ??

หวังว่าคุณจะสามารถช่วยฉันได้

ขอแสดงความนับถือ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีปีเตอร์
รหัสนี้ทำงานได้ดีสำหรับการจัดแถวของข้อมูลทั้งหมดให้พอดี คุณช่วยป้อนช่วงตารางให้ถูกต้องได้ไหม

A1:C20 คือช่วงข้อมูลของคุณ E1:E2 คือช่วงเกณฑ์
Range("A1:C20")).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณมากสำหรับสิ่งนี้ มันใช้ได้ดีสำหรับฉันในระดับหนึ่ง โปรดให้ฉันอธิบาย:

ฉันมีหลายตารางในสมุดงานของฉัน เมื่อฉันใช้โค้ดข้างต้น มันใช้งานได้กับตารางเดียวเท่านั้น แต่ใช้กับอีกสองตารางไม่ได้ สมมติว่าตารางแรกมาจาก A1:C20 ตามตัวอย่างของคุณ ตารางที่สองมาจาก A22:C40 ที่สามจาก A42:C60 ตารางทั้งหมดมีข้อมูลเกี่ยวกับ "เกรด" อย่างไรก็ตาม มีคอลัมน์ & วันที่ต่างกัน ดังนั้นจึงไม่สามารถรวมเป็นตารางขนาดใหญ่เดียว แต่มี 3 ตารางที่เล็กกว่า

รหัสจะต้องชอบอย่างไรโดยที่ฉันใส่เกณฑ์: "Grade1" ทั้ง 3 ตารางจะถูกกรองโดยอัตโนมัติสำหรับ "Grade1"

ขอบคุณล่วงหน้า.

ด้วยความเคารพ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี,

ขอบคุณสำหรับเนื้อหาที่ยอดเยี่ยม แต่ฉันมีปัญหาบางอย่างและสงสัยว่าคุณมีความคิดเห็นหรือไม่ว่าทำไม

ฉันได้ปรับช่วงของฉันเพื่อให้โค้ดของฉันอ่าน:

ตัวกรองย่อยอัตโนมัติ ()
ถ้า Target.Address = Range("E13:F14").Address แล้ว
แผ่นงาน('Data Archive').Range("A1:C20")).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("F10:F1048576")
End If
ย่อยสิ้นสุด


อย่างไรก็ตาม เมื่อฉันเรียกใช้แมโคร ข้อความ "ข้อผิดพลาดในการคอมไพล์: ข้อผิดพลาดทางไวยากรณ์" จะปรากฏขึ้น

ขอขอบคุณล่วงหน้า

สแตน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีสแตน
คุณตั้งค่าช่วงข้อมูลและช่วงเกณฑ์อย่างถูกต้องในโค้ดหรือไม่ หรือคุณสามารถใช้ช่วงข้อมูลเป็นภาพหน้าจอได้ที่นี่
ขอขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีมีวิธีแก้ไขโค้ด VBA อย่างรวดเร็วเพื่อกรองค่าที่ใหญ่กว่าในเซลล์ที่เลือกหรือไม่?
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
โหลดเพิ่มเติม
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ