การจัดระเบียบข้อมูลการขายโดยใช้ Excel Macros


0

ฉันกำลังเขียนฟังก์ชันแมโครใน Excel เพื่อจัดระเบียบชุดข้อมูลการขายรายเดือน รูปแบบดั้งเดิมใช้ 6 แถวต่อรายการและตารางที่จัดระเบียบใช้เพียง 1 จำนวนการเปลี่ยนแปลงของยอดขายทุกเดือนดังนั้นฉันต้องคิดหาวิธีในการระบุจำนวนรายการขายที่มีเพื่อให้ฉันรู้ว่าจะขยาย สูตร

ในตอนท้ายของข้อมูลดิบจะปรากฏคำว่า "SIGNED:" ในคอลัมน์ที่สองเสมอดังนั้นฉันจึงใช้ฟังก์ชันทางอ้อมและการจับคู่เพื่อกำหนดว่าจะเติมสูตรได้ไกลแค่ไหน รหัสที่ฉันใช้มีลักษณะดังนี้:

    Application.Goto Reference:= _
         "INDIRECT(""T"" & (MATCH(""SIGNED:"",RawData!C2:C2,0)-3)/6+1)"
    Range("T2", Selection).Select
    Selection.FillDown

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

    Application.Goto Reference:= _
        "INDIRECT(""T"" & Ceiling((MATCH(""SIGNED:"",RawData!C[-20],0)-3)/6+1),1))"
    Range("A2", Selection).Select
    Selection.FillDown

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

ขอบคุณ!

คำตอบ:


0

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

โปรดทราบว่าไม่จำเป็นต้องเลือกช่วงที่จะดำเนินการ

Dim lastcell As Range
Set lastcell = Cells.Find(What:="*", After:=[A1], _
    SearchDirection:=xlPrevious)
Range("A2:A" & lastcell.Row).FillDown
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.