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

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

เราจะเขียนโค้ด VBA แบบง่ายๆเพื่อระบุข้อมูลบางส่วนในแผ่นงานหนึ่งแผ่นโดยพิจารณาจากข้อมูลในแผ่นงานอื่น ภาพจำลองที่เราจะดูคือการอัปเดต master ตามตารางแยก update

รหัสของเราจะถือว่าไฟล์อัพเดตมีรายชื่อที่ไม่เหมือนใคร รหัสผลิตภัณฑ์ในคอลัมน์แรกและราคาใหม่ในคอลัมน์ (2) เราจะสร้างคอลเลกชันใหม่ของรหัสผลิตภัณฑ์เพื่อให้เราสามารถเข้าถึงข้อมูลโดยตรงในไฟล์ต้นแบบที่มีโครงสร้างเหมือนกัน

การค้นหาข้อมูลอย่างมีประสิทธิภาพในกระดาษคำนวณด้วย VBA

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


สำหรับแต่ละเซลล์ใน updateFile

สำหรับแต่ละเซลล์ใน masterFile

'ค้นหารายการที่ตรงกัน

ถัดไป
ต่อไป

สำหรับชุดข้อมูลขนาดเล็กลูปนี้สร้างปัญหาเล็กน้อย แต่จะเกิดอะไรขึ้นถ้ามีรายการมากกว่า 1000 รายการ? โค้ดอาจใช้เวลาสักครู่ในการเรียกใช้ แทนเราจะดูรหัสบางส่วนเพื่อพาเราตรงไปยังรายการที่ตรงกันในไฟล์ต้นแบบ:


สำหรับแต่ละเซลล์ใน updateFile

'ไปที่เซลล์ที่ตรงกันใน masterFile
ต่อไป งานแรกคือการสร้างดัชนีของรหัสผลิตภัณฑ์แผ่นหลักและหมายเลขแถวของพวกเขาใน

คอลเลกชันใหม่


ซองผลิตภัณฑ์รหัสเป็นคอลเลกชันใหม่
แผ่น ( "ต้นแบบ"). เปิดใช้งาน
ช่วง ("a1") CurrentRegion.Columns (1) เลือก

สำหรับแต่ละ c ในการเลือก

productCodes.Add c.Row, c.Text
ถัดไป

เราได้สร้างดัชนีของรหัสผลิตภัณฑ์โดยการเพิ่มหมายเลขแถวของแต่ละรหัสและสำคัญโดยใช้รหัสผลิตภัณฑ์เป็นคีย์ที่ไม่ซ้ำกัน ซึ่งหมายความว่าเราสามารถเข้าถึงรหัสผลิตภัณฑ์โดยตรงและรับหมายเลขแถวในไฟล์ต้นแบบ

การอัปเดตไฟล์หลักโดยใช้รหัสผลิตภัณฑ์

ตอนนี้ทั้งหมด รหัสต้องทำคือลูปผ่านแฟ้มการอัพเดทและเข้าถึงรหัสผลิตภัณฑ์ที่ตรงกันในไฟล์ต้นแบบโดยตรงและอัปเดตราคา


แผ่น ( "ปรับปรุง"). เปิดใช้งาน
Range ("a1"). CurrentRegion.Columns (1). เลือก

สำหรับแต่ละ c ในการเลือก
'รับราคาล่าสุดจากไฟล์อัพเดตและเข้าใช้งาน
'หมายเลขแถวของรหัสผลิตภัณฑ์ที่ตรงกันในไฟล์ต้นแบบ

newPrice = c.Offset (0, 1) .Value
rowNo = productCodes (c.Text)

'อัพเดตไฟล์ต้นแบบ
แผ่นงาน ("master") เปิดใช้งาน

ช่วง ("b" & rowNo) .Value = newPrice

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

Source by sbobet

Leave a Comment