เนื้อหา

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

การนำเข้า Floating Fragment ใน Power Query

นั่นคือเราไม่สามารถพูดล่วงหน้าได้อย่างแน่ชัดว่าต้องนำเข้าจากบรรทัดใดและต้องนำเข้ากี่บรรทัด และนี่คือปัญหา เนื่องจากพารามิเตอร์เหล่านี้ถูกฮาร์ดโค้ดใน M-code ของคำขอ และหากคุณขอไฟล์แรก (นำเข้า 5 บรรทัดโดยเริ่มจากไฟล์ที่ 4) ไฟล์นั้นจะทำงานไม่ถูกต้องกับไฟล์ที่สองอีกต่อไป

คงจะดีถ้าการสืบค้นของเราสามารถกำหนดจุดเริ่มต้นและจุดสิ้นสุดของบล็อกข้อความ "ลอย" สำหรับการนำเข้าได้

โซลูชันที่ฉันต้องการนำเสนอขึ้นอยู่กับแนวคิดที่ว่าข้อมูลของเรามีคำหลักหรือค่าบางอย่างที่สามารถใช้เป็นเครื่องหมาย (คุณสมบัติ) ของจุดเริ่มต้นและจุดสิ้นสุดของบล็อกข้อมูลที่เราต้องการ ในตัวอย่างของเรา จุดเริ่มต้นจะเป็นบรรทัดที่ขึ้นต้นด้วยคำว่า SKUและลงท้ายด้วยคำว่า รวม. การตรวจสอบความถูกต้องของแถวนี้ใช้งานได้ง่ายใน Power Query โดยใช้คอลัมน์แบบมีเงื่อนไข ซึ่งเป็นอะนาล็อกของฟังก์ชัน IF (ถ้า) ในไมโครซอฟต์เอ็กเซล

เรามาดูวิธีการทำ

ขั้นแรก ให้โหลดเนื้อหาของไฟล์ข้อความของเราลงใน Power Query ด้วยวิธีมาตรฐาน – ผ่านคำสั่ง ข้อมูล – รับข้อมูล – จากไฟล์ – จากไฟล์ข้อความ/CSV (ข้อมูล – รับข้อมูล – จากไฟล์ – จากไฟล์ข้อความ/CSV). หากคุณติดตั้ง Power Query เป็น Add-in แยกต่างหาก คำสั่งที่เกี่ยวข้องจะอยู่บนแท็บ Power Query:

การนำเข้า Floating Fragment ใน Power Query

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

การนำเข้า Floating Fragment ใน Power Query

ตอนนี้ด้วยคำสั่ง การเพิ่มคอลัมน์ – คอลัมน์เงื่อนไข (เพิ่มคอลัมน์ — คอลัมน์เงื่อนไข)ให้เพิ่มคอลัมน์ที่มีการตรวจสอบสองเงื่อนไข - ที่จุดเริ่มต้นและจุดสิ้นสุดของบล็อก - และแสดงค่าที่แตกต่างกันในแต่ละกรณี (เช่น ตัวเลข 1 и 2). หากไม่ตรงตามเงื่อนไข ให้ส่งออก โมฆะ:

การนำเข้า Floating Fragment ใน Power Query

หลังจากคลิกที่ OK เราได้รับภาพต่อไปนี้:

การนำเข้า Floating Fragment ใน Power Query

ตอนนี้ไปที่แท็บ การแปลง และเลือกทีม เติม-ลง (แปลง-เติม-ลง) – คนและสองคนของเราจะยืดคอลัมน์:

การนำเข้า Floating Fragment ใน Power Query

อย่างที่คุณอาจเดาได้ คุณสามารถกรองหน่วยในคอลัมน์เงื่อนไข และนี่คือข้อมูลที่เราต้องการ:

การนำเข้า Floating Fragment ใน Power Query

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

แก้ไขปัญหา. ตอนนี้ เมื่อเปลี่ยนข้อมูลในไฟล์ข้อความต้นฉบับ คิวรีจะกำหนดจุดเริ่มต้นและจุดสิ้นสุดของส่วนย่อย "แบบลอย" ของข้อมูลที่เราต้องการอย่างอิสระ และนำเข้าจำนวนบรรทัดที่ถูกต้องในแต่ละครั้ง แน่นอน วิธีการนี้ยังใช้ได้ในกรณีของการนำเข้า XLSX ไม่ใช่ไฟล์ TXT เช่นเดียวกับเมื่อนำเข้าไฟล์ทั้งหมดจากโฟลเดอร์พร้อมกันด้วยคำสั่ง ข้อมูล – รับข้อมูล – จากไฟล์ – จากโฟลเดอร์ (ข้อมูล — รับข้อมูล — จากไฟล์ — จากโฟลเดอร์).

  • การประกอบตารางจากไฟล์ต่างๆ โดยใช้ Power Query
  • การออกแบบครอสแท็บใหม่ให้แบนด้วยแมโครและ Power Query
  • การสร้างแผนภูมิแกนต์ของโครงการใน Power Query

เขียนความเห็น